3

在某些编程语言中,所有字符串都有一个 @ 前缀,即 var foo = @"this is a test";

如果字符串没有 @ 前缀,.NET 框架是否需要做额外的工作?是否需要进行任何扫描?我很好奇我们应该在所有可能的字符串上使用@?

4

2 回答 2

8

从 MSIL 的角度来看,没有区别

string test = @"\test1";
string test2 = "test2";


IL_0001:  ldstr       "\test1"
IL_0006:  stloc.0     
IL_0007:  ldstr       "test2"
IL_000C:  stloc.1     
于 2012-08-04T23:31:16.887 回答
7

使用逐字字符串可能会或可能不会更快,您甚至可能无法通过为编译器提供特制程序来测量。在任何情况下,此处理都发生在编译时,这使得所有相关工作“免费”。因此,从这个角度来看,绝对没有支持或反对逐字字符串的论据。

也就是说,我已经看到开发工具将非逐字字符串视为本地化的候选者——在这种情况下,在适当的情况下使用逐字字符串确实有一些价值。

于 2012-08-04T23:28:17.477 回答