我在代码审查期间遇到了一些代码,其中一位老同事做了以下事情:
const string replacement = @"";
此字符串在正则表达式中用作匹配内容的替换。我的问题是将@文字符号添加到空字符串的开头是什么目的。不应该有任何字面解释。
@"";
和 "";
之间的影响会有什么不同吗?
最佳答案
This string is used in a regex expression
正则表达式大量使用 \
字符。例如,下面是一个正则表达式,用于匹配从 0
到 100
的百分比,它们总是有四个小数位:
^(100\.0000|[1-9]?\d\.\d{4})$
因为 \
必须在更常见的 C# 语法中转义为 \\
@""
形式允许正则表达式是更容易阅读,比较:
"^(100\\.0000|[1-9]?\\d\\.\\d{4})$"
@"^(100\.0000|[1-9]?\d\.\d{4})$"
由于这个原因,人们在使用正则表达式时经常养成使用 @""
形式的习惯,即使在没有任何区别的情况下也是如此。一方面,如果他们后来更改为确实有所不同的内容,则只需要更改表达式,而不是字符串本身的代码。
我认为这可能就是为什么您的同事在这种特殊情况下使用 @""
而不是 ""
的原因。产生的 .NET 是一样的,但他们习惯于使用 @""
和正则表达式。
关于c# - 空字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30792567/