1. ホーム
  2. c#

[解決済み] C#でベースコンストラクタを呼び出す

2022-03-16 08:20:02

質問

ある基底クラスを継承して、継承したクラスのコンストラクタから基底クラスのコンストラクタに何かを渡したい場合、どのようにすればよいですか?

例えば、Exceptionクラスを継承した場合、以下のような処理を行いたい。

class MyExceptionClass : Exception
{
     public MyExceptionClass(string message, string extraInfo)
     {
         //This is where it's all falling apart
         base(message);
     }
}

基本的に私が欲しいのは、ベースとなるExceptionクラスに文字列メッセージを渡すことができるようにすることです。

解決方法は?

ベースクラスのコンストラクタを正しく呼び出すように、コンストラクタを以下のように変更してください。

public class MyExceptionClass : Exception
{
    public MyExceptionClass(string message, string extrainfo) : base(message)
    {
        //other stuff here
    }
}

コンストラクタは、メソッドの中でいつでも呼び出せるものではないことに注意してください。それが、コンストラクタ本体での呼び出しでエラーが発生する理由です。