常规字符串的许多实例使用的内存多于const字符串吗?

时间:2015-10-15 15:36:32

标签: c# .net-3.5

我正在开发一个类似这样的类的应用程序:

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"));        
    }
}

在应用程序中,ClassAClassB都使用了数千次,以跟踪应用程序中几乎所有操作的性能。

我想知道将这些字符串更改为staticconst值是否有任何好处。

使用这样的代码,这个字符串的多个副本存储在内存中,或.Net确保只有一个副本存在,无论创建ClassAClassB的实例数是多少?

1 个答案:

答案 0 :(得分:1)

没有任何好处。程序中的任何字符串(与来自用户输入或文件的内容相对)都是实例化的,并且只有一个副本。您只是以任何方式引用实习副本。

如果您有兴趣了解更多内容,请参阅以下有关字符串实习的文章的链接:http://broadcast.oreilly.com/2010/08/understanding-c-stringintern-m.html