常规字符串的许多实例是否比 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"));
}
}
ClassA
和 ClassB
在应用程序中被使用了数千次,以跟踪应用程序中几乎每个操作的性能。
我想知道将这些字符串更改为 static
或 const
值是否有任何好处。
对于这样的代码,这个字符串的多个副本是否存储在内存中,或者 .Net 是否确保只存在一个副本,而不管 ClassA
和 ClassB
创建了多少个实例?
那不会有任何好处。程序中的任何字符串(而不是来自用户输入或文件的字符串)都会被保留,并且只有一个副本。无论哪种方式,您都只是在引用实习副本。
如果您有兴趣了解更多信息,这里有 link 一篇关于字符串实习的文章:http://broadcast.oreilly.com/2010/08/understanding-c-stringintern-m.html
我正在开发一个 类 像这样的应用程序:
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
创建了多少个实例?
那不会有任何好处。程序中的任何字符串(而不是来自用户输入或文件的字符串)都会被保留,并且只有一个副本。无论哪种方式,您都只是在引用实习副本。
如果您有兴趣了解更多信息,这里有 link 一篇关于字符串实习的文章:http://broadcast.oreilly.com/2010/08/understanding-c-stringintern-m.html