哪一个好:
string sQuery = "SELECT * FROM table";
Run Code Online (Sandbox Code Playgroud)
要么
const string sQuery = "SELECT * FROM table";
Run Code Online (Sandbox Code Playgroud)
为什么resharper总是建议我这样做?
鉴于以下简单的 .NET 代码,这两者之间在字符串方面有什么区别"xml"吗?
if (extension.Equals("xml", StringComparison.OrdinalIgnoreCase))
{
return FileType.Xml;
}
Run Code Online (Sandbox Code Playgroud)
对比
const string xmlText = "xml";
if (extension.Equals(xmlText, StringComparison.OrdinalIgnoreCase))
{
return FileType.Xml;
}
Run Code Online (Sandbox Code Playgroud)
请注意,这个词"xml"在课堂上再也没有出现过。它实际上就在那个地方。
我的印象是,.NET 编译器的更新版本将像这样的简单字符串转换为 const(在后台)。
更棒的是,如果在另一个地方使用了另一个 "xml"字符串,编译器只会创建一个const,并且这两个引用都将引用该单个字符串引用/内存分配。
那么 - 在性能方面,幕后有什么不同吗?
免责声明:请不要发表“微优化”评论。我明白了。这实际上是关于理解事物与尝试对一行代码进行微优化。