C#类实例化const字符串

时间:2013-09-03 14:56:04

标签: c# const heap-memory

我已经读过const字符串对象存储为值并在编译时分配它们的值。这是否意味着即使封装类没有实例化也会分配内存,即如果使用了const关键字(太多的const字符串)会浪费堆空间?

编辑:某些背景信息......

我需要很多常量值string对象,其中一些肯定会被使用,而另一些将根据用户的交互使用(即仅针对特定用例)。我知道将使用的第一组字符串我在static类中声明为const个对象。其余的字符串,是否应该使用const声明,否则如果永远不会触发那些特定的用例,这会占用不必要的堆空间吗?

1 个答案:

答案 0 :(得分:2)

如果你的字符串是你的类的静态属性,那么它们将被分配,否则它们将被分配,直到它们被实例化

String interning是一个进程,用于改善内存和堆使用,并允许更有效的字符串比较

<强> http://en.wikipedia.org/wiki/String_interning

<强> http://broadcast.oreilly.com/2010/08/understanding-c-stringintern-m.html