public class ClassA
{
public static readonly string processName;
}
public class ClassB : ClassA
{
static ClassB()
{
processName = "MyProcess.exe";
}
}
上記のC#コードのコンパイル中にエラーが発生します。
エラーには、「静的読み取り専用フィールドを割り当てることはできません(静的コンストラクターまたは変数初期化子を除く)」と表示されます。
しかし、私はそれを静的コンストラクターで割り当てています。
このような静的変数の必要性は、基本クラスにはこの変数を使用するメソッドがありますが、派生クラスと基本クラスにはこの変数の異なる値が必要です。ただし、値はそれぞれのクラスのすべてのインスタンスで一定です。どこからでも変更してはならないため、読み取り専用にする必要があります。
上記のコードのエラーは何ですか?(もしあれば)見つけられないようです。エラーメッセージは役に立ちません。私はそれに従って何も悪いことをしていないので。
エラーが発生した場合、どうすればこの機能を実装できますか?簡単な回避策は、インスタンス変数にして、派生クラスで異なる値を割り当てることです。ただし、値はそれぞれのクラスのすべてのインスタンスで一定であるため、これは不要です。