c# - 空字符串文字

标签 c# string

我在代码审查期间遇到了一些代码,其中一位老同事做了以下事情:

const string replacement = @""; 

此字符串在正则表达式中用作匹配内容的替换。我的问题是将@文字符号添加到空字符串的开头是什么目的。不应该有任何字面解释。

@"";""; 之间的影响会有什么不同吗?

最佳答案

This string is used in a regex expression

正则表达式大量使用 \ 字符。例如,下面是一个正则表达式,用于匹配从 0100 的百分比,它们总是有四个小数位:

^(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/

相关文章:

javascript - 如何返回没有括号的数组javascript

c# - 仅供外部访问的方法?

c# - 在 NavigationItem.TitleView 中缩放图像以适应 UINavigationBar 的内部

c# - 计划的 Windows 服务中的一致 FTP 超时

c# - 使用 CefSharp 等待页面加载

javascript - string.replace ("é", "e") 不工作

javascript - JSON.parse 无法将字符串更改为对象

javascript - 如何使用分隔符从旧数组派生出新的字符串数组

c# - 与 Entity Framework 和 SQL (ADO.NET) 的并发性

java - 对包含数字的字符串数组进行排序