常规字符串的许多实例是否比 const 字符串使用更多的内存?

Do many instances of regular strings use more memory than const strings?

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

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 创建了多少个实例?

那不会有任何好处。程序中的任何字符串(而不是来自用户输入或文件的字符串)都会被保留,并且只有一个副本。无论哪种方式,您都只是在引用实习副本。

如果您有兴趣了解更多信息,这里有 link 一篇关于字符串实习的文章:http://broadcast.oreilly.com/2010/08/understanding-c-stringintern-m.html