2013-10-07 143 views
6

这段代码有什么问题? 我得到这个错误:“表达被分配到‘......’必须是常量”分配给'....'的表达式必须是常量

public const string ConnectionString = System.IO.File.ReadAllText(@"D:\connection.ini"); 
+0

您是否阅读过'const'的[documentation](http://msdn.microsoft.com/zh-cn/library/e6w8fe1b.aspx)? – Jon

+0

必须在编译时知道'const'值。在你的例子中,你要求编译器走开并执行一段随机的代码 - 它不会这样做。 – Rob

+0

您的'File.ReadAllText'部分在运行时进行评估,'const'用于指定编译时表达式。您可以使用'readonly'来代替。 –

回答

24

的常数值,必须在编译时是已知的,使用只读相反,它会产生类似的效果

+5

更多类似的是'static readonly' – Silvermind

+0

@Silvermind你是对的,但是'static readonly'的确意味着如果在执行静态构造函数时文件不存在,没有从错误中恢复的方法,所以我不会我认为这不会改变这里的readonly实例字段。 – hvd

+0

@ hvd,我同意,但我不想在每个实例中加载这样的文件。同样的问题会发生,如果它可以是一个常数顺便说一句。 – Silvermind

相关问题