コードインスペクション: パラメーターがプライマリコンストラクターのパラメーターを隠す
オブジェクト初期化子を使用して using 変数を初期化すると、初期化中に例外がスローされた場合に問題が発生する可能性があります。 これが可能になるのは、実行が using 句に入る前にコンパイラーがオブジェクトを作成して初期化するためです。 初期化中に例外がスローされた場合、プログラムは using 句に入らず、オブジェクトは破棄されません。
以下の例では、 Print() メソッドのパラメーター str は、 MySample クラスのプライマリコンストラクターパラメーターと同じ名前を持っていますが、 Console.WriteLine(str); が two を出力することは明らかです。
ここで、 MySample と Print() が複数のパラメーターを持つ長い宣言であると想像してください。 この場合、コードの読者はメソッド内の str パラメーターを見逃し、 Console.WriteLine(str); がオブジェクトの作成中に受信した one を出力すると想定する可能性があります。
混乱や潜在的なエラーを避けるために、メソッドパラメーターの名前を変更します。
public class MyTest
{
public MyTest()
{
var sample = new MySample("one");
sample.Print("two");
}
}
public class MySample(string str)
{
public void Print(string str)
{
Console.WriteLine(str);
}
}
2026 年 6 月 12 日