【发布时间】:2011-05-26 17:51:32
【问题描述】:
为什么我不能在初始化程序中初始化只读变量? 以下内容无法正常工作:
class Foo
{
public readonly int bar;
}
new Foo { bar=0; }; // does not work
这是因为 CLR 的一些技术限制吗?
编辑
我知道new Foo { bar=0; } 与new Foo().bar=0; 相同,但是CLR 强制执行“只读”,还是只是编译器限制?
【问题讨论】:
-
根据您的最新编辑,我不知道您在问什么。是的,
readonly在运行时由 CLR 强制执行。我不明白它怎么可能是编译器限制。其他答案解释了为什么您尝试做的事情没有任何意义。 -
@Cody Gray -- 语言限制,不是编译器限制。编译器只是实现了语言。
-
@pst:呃,我说“我不明白它怎么可能是编译器限制。”我同意你的看法。
标签: c# .net c#-3.0 initialization readonly