JetBrains Rider 2024.1 ヘルプ

コード検査: パラメーターはプライマリコンストラクターパラメーターを非表示にする

オブジェクト初期化子を使用して using 変数を初期化すると、初期化中に例外がスローされた場合に問題が発生する可能性があります。これが可能になるのは、実行が using 句に入る前にコンパイラーがオブジェクトを作成して初期化するためです。初期化中に例外がスローされた場合、プログラムは using 句に入らず、オブジェクトは破棄されません。

以下の例では、Print() メソッドのパラメーター str は、MySample クラスのプライマリコンストラクターパラメーターと同じ名前を持っていますが、Console.WriteLine(str);two を出力することは明らかです。

ここで、MySamplePrint() が複数のパラメーターを持つ長い宣言であると想像してください。この場合、コードの読者はメソッド内の 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); } }