上級のC#エラー 24問
8種類のエラーを、それぞれ複数パターンずつ収録しています。
- A readonly field cannot be assigned to の原因と直し方readonly修飾子を付けたフィールドを、コンストラクタや初期化子以外の場所で書き換えようとすると出るコンパイルエラーです。
- TypeInitializationException の原因と直し方静的コンストラクタ(staticフィールドの初期化を含む)の中で例外が起きると、直接の例外ではなくTypeInitializationExceptionに包まれて報告されます。
- SwitchExpressionException の原因と直し方switch式が全てのパターンを網羅していないとき、コンパイラは警告を出しますが止めません。網羅されていない値が実際に渡された瞬間に実行時エラーになります。
- sealedメンバーをオーバーライドしようとした原因と直し方sealed overrideを付けたメンバーを、さらに下の派生クラスでオーバーライドしようとすると出るコンパイルエラーです。
- record と class で == の結果が変わる理由recordはプロパティの値が全て同じなら==がtrueになる値ベースの等価性を自動生成します。classは既定で参照ベースの等価性のままです。
- ArrayTypeMismatchException の原因と直し方配列の共変性(string[]をobject[]として扱えること)を利用したコードで、実体の型と異なる要素を代入すると発生します。
- does not contain a definition の原因と直し方(明示的インターフェース実装)明示的インターフェース実装(void IWorker.Work()のような書き方)で定義したメンバーは、クラス型の変数からは見えません。インターフェース型の変数からしか呼び出せません。
- does not implement inherited abstract member の原因と直し方abstractなメンバーを持つ基底クラスを継承したのに、そのメンバーをoverrideしていないと出るコンパイルエラーです。