2010-04-13 44 views
9

如何分配的内存,当我使用:内存分配常数

public class MyClass 
{  
    public const string myEVENT = "Event"; 
    //Other code 
} 

回答

12

嗯,这是一个编译时间常数 - 所以,如果你从其他组件使用它,“事件”将被复制到IL为那些其他集会。是否获得交叉装配取决于CLR设置IIRC。

不过,如果你担心你是否会得到一个新的字符串一个新的字符串变量的MyClass每个实例,你不必担心 - const意味着static

总之,除非你有巨大的,巨大的一团常量(或巨大的字符串常量)它不会导致你的问题。

+1

我认为[Oxymoron]的这个维基百科页面(http://en.wikipedia.org/wiki/Oxymoron)应该指向这里...(Jon使用IIRC ...这就像查克诺里斯想知道他是否可以得到在其他Jon事实中,请看[这里](http://meta.stackexchange.com/a/9182/237379)... :) – Noctis 2014-05-07 23:42:44

+0

嘿@Jon Skeet, - “const暗示静态。”意思是conatant是默认情况下,会为不同的所有对象生成常量变量的静态和单个副本。 ? – vimalraturi 2017-12-10 04:17:41

+1

@vimalraturi:这意味着无论实例的数量如何,都有一个字段,即使它们中没有任何一个。 – 2017-12-10 09:13:12