読者です 読者をやめる 読者になる 読者になる

checkpoint

自分用のIT技術系ノートです。古い情報や間違っている情報もあるので注意。

メソッドのオーバーロード作成時にありがちなバグ

C# .NET

例えば、下の様なメソッドがあって

public void ExampleMethod(string param1, int param2)
{
   (省略)
}

これに、引数が「param1」だけのオーバーロードを作るとします。
その場合正しくは、

public void ExampleMethod(string param1)
{
   this.ExampleMethod(param1, 10);
}

とかいう感じになるのですが、メソッド呼び出しの引数指定を間違えて

public void ExampleMethod(string param1)
{
   this.ExampleMethod(param1);
}

としてしまうことがありました。要するに呼び出し元と呼び出し先のメソッドが同じ。無限ループです。

ただの凡ミスですが、このバグはビルドエラーはおろか警告も一切出してくれないので注意が必要です。

このメソッドが呼び出された場合、当然無限ループとなりStackOverflowExceptionがスローされます。

引数の数が違うだけのオーバーロードを作成する場合は十分に注意しましょう。