逐字字符串文字 v 转义序列



C# 编译器或 .NET 运行时处理逐字字符串文本的方式与使用转义序列(即性能)的方式是否有任何区别,或者这只是设计时样式的问题? 例如:

var pathA = "c:\somewhere";
var pathB = @"c:somewhere";

我想它们的编译是一样的,没关系,只是好奇。

这里的任何差异都严格限于编译器; IL 和运行时没有逐字与转义的概念 - 它只有字符串

至于选择哪个:;p哪个更方便,如果有不寻常的字符,我几乎总是使用逐字字符串文字,因为这允许非常容易和直观地使用多行字符串。

作为一个有趣的案例:

bool areSame = ReferenceEquals("c:\somewhere", @"c:somewhere"); // true

这说明它们是完全相同的字符串实例(感谢"实习")。它们不仅等效;它们是运行时的同一字符串实例。因此,它们不可能以任何方式(对运行时)不同。

它们完全相同。尝试使用反编译器反编译这两个版本。

对于

开发人员来说,在代码中编写它时,这只是一个方便的问题。

字符串前面的 @ 符号告诉编译器忽略任何嵌入的转义序列。

字符串"\"将产生一个双引号。字符串"\"将产生单个反斜杠字符串 @"\" 将产生两个反斜杠

相关内容

  • 没有找到相关文章

最新更新