2013-10-07 30 views
6

このコードで何が問題になっていますか? が、私はこのエラーを取得する:「という表現はに割り当てられている 『....』一定でなければならない」読み取り専用の代わりに使用し、'....'に割り当てられる式は定数でなければなりません

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

「const」の[documentation](http://msdn.microsoft.com/en-us/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、私は同意しますが、私が作るすべてのインスタンスでそのようなファイルをロードしたくないです。定数btwであれば同じ問題が発生します。 – Silvermind

関連する問題