Skip to content

Commit fbbe594

Browse files
committed
Use list patterns to match string prefixes.
The compiler can optimize this more than the original version, by eliminating redundant checks.
1 parent bb2eb2e commit fbbe594

File tree

1 file changed

+9
-13
lines changed

1 file changed

+9
-13
lines changed

src/MySqlConnector/MySqlParameter.cs

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -721,19 +721,15 @@ internal void AppendBinary(ByteBufferWriter writer, StatementPreparerOptions opt
721721
}
722722
}
723723

724-
internal static string NormalizeParameterName(string name)
725-
{
726-
name = name.Trim();
727-
728-
if ((name.StartsWith("@`", StringComparison.Ordinal) || name.StartsWith("?`", StringComparison.Ordinal)) && name.EndsWith("`", StringComparison.Ordinal))
729-
return name.Substring(2, name.Length - 3).Replace("``", "`");
730-
if ((name.StartsWith("@'", StringComparison.Ordinal) || name.StartsWith("?'", StringComparison.Ordinal)) && name.EndsWith("'", StringComparison.Ordinal))
731-
return name.Substring(2, name.Length - 3).Replace("''", "'");
732-
if ((name.StartsWith("@\"", StringComparison.Ordinal) || name.StartsWith("?\"", StringComparison.Ordinal)) && name.EndsWith("\"", StringComparison.Ordinal))
733-
return name.Substring(2, name.Length - 3).Replace("\"\"", "\"");
734-
735-
return name.StartsWith("@", StringComparison.Ordinal) || name.StartsWith("?", StringComparison.Ordinal) ? name.Substring(1) : name;
736-
}
724+
internal static string NormalizeParameterName(string name) =>
725+
name.Trim() switch
726+
{
727+
['@' or '?', '`', .. var middle, '`'] => middle.Replace("``", "`"),
728+
['@' or '?', '\'', .. var middle, '\''] => middle.Replace("''", "'"),
729+
['@' or '?', '"', .. var middle, '"'] => middle.Replace("\"\"", "\""),
730+
['@' or '?', .. var rest] => rest,
731+
{ } other => other,
732+
};
737733

738734
#if NET6_0_OR_GREATER
739735
private static void WriteDateOnly(ByteBufferWriter writer, DateOnly dateOnly)

0 commit comments

Comments
 (0)