【发布时间】:2013-01-01 20:01:04
【问题描述】:
类示例:
public class SomeType
{
private int type;
// some code...
public override string ToString ()
{
if (type == 1) return "One";
if (type == 2) return "Two";
}
}
现在想象一下应用程序在一秒钟内调用数千次ToString() 方法。
我的问题是:当我在 something = myClass.ToString() 之类的代码中使用内联创建的字符串时,是在每次调用中创建一个新字符串还是编译器以某种方式对其进行优化? (因为字符串是不可变的,所以只能返回对静态字符串的引用)。
如果没有,出于性能原因,我是否应该制作静态私有字符串字段并在ToString 方法中返回它们?
当然我会使用秒表来测试它,但无论如何我需要一个专家的答案。
【问题讨论】: