我正在开发一个类似这样的类的应用程序:
public class ClassA
{
List<ClassB> _myList = new List<ClassB>();
public ClassA()
{
_myList.Add(new ClassB("String A"));
_myList.Add(new ClassB("String B"));
_myList.Add(new ClassB("String C"));
_myList.Add(new ClassB("String D"));
_myList.Add(new ClassB("String E"));
}
}
在应用程序中,ClassA
和ClassB
都使用了数千次,以跟踪应用程序中几乎所有操作的性能。
我想知道将这些字符串更改为static
或const
值是否有任何好处。
使用这样的代码,这个字符串的多个副本存储在内存中,或.Net确保只有一个副本存在,无论创建ClassA
和ClassB
的实例数是多少?
答案 0 :(得分:1)
没有任何好处。程序中的任何字符串(与来自用户输入或文件的内容相对)都是实例化的,并且只有一个副本。您只是以任何方式引用实习副本。
如果您有兴趣了解更多内容,请参阅以下有关字符串实习的文章的链接:http://broadcast.oreilly.com/2010/08/understanding-c-stringintern-m.html