有没有在C#编译器或.NET运行时如何处理逐字字符串与使用转义序列(即性能)任何区别,或只是设计时间样式的事? 例如:
var pathA = "c:\\somewhere";
var pathB = @"c:\somewhere";
我可以想象他们被编译相同的,也没关系,但只是好奇。
有没有在C#编译器或.NET运行时如何处理逐字字符串与使用转义序列(即性能)任何区别,或只是设计时间样式的事? 例如:
var pathA = "c:\\somewhere";
var pathB = @"c:\somewhere";
我可以想象他们被编译相同的,也没关系,但只是好奇。
这里的任何差异被严格限制的编译器; IL和运行时都没有逃脱VS逐字概念-它只是字符串 。
至于可供选择:取其更方便; p我几乎总是使用逐字字符串,如果有特殊字符,作为能够多行字符串非常容易和直观。
作为一个有趣的例子:
bool areSame = ReferenceEquals("c:\\somewhere", @"c:\somewhere"); // true
它告诉他们是完全相同的字符串实例(感谢“实习”)。 他们不只是同等学历 ; 他们是相同的字符串实例的运行时间。 因此, 不可能使它们可以是(到运行时)以任何方式不同。
他们是完全一样的。 尝试反编译两个版本反编译。
在编写代码时,这只是一个方便开发者的问题。
在一个字符串的前面的@符号告诉编译器忽略任何嵌入式转义序列。
字符串“\””会产生一个双引号。字符串‘\’会产生一个反斜杠字符串@‘\’将产生两个反斜杠