コードを詳しく調べると、2 つのオブジェクトの参照を比較していることがわかります。あるオブジェクトの参照は他のオブジェクトの参照と同じにすることはできないため、このコードではif-else if
組み合わせて使用できるため、次のようになります。
private void Click(object sender, EventArgs e)
{
if (Object.ReferenceEquals(sender, c0)) { spotClick(0); }
else if (Object.ReferenceEquals(sender, c1)) { spotClick(1); }
else if (Object.ReferenceEquals(sender, c2)) { spotClick(2); }
else if (Object.ReferenceEquals(sender, c3)) { spotClick(3); }
}
ReferenceEquals
メソッドは、両方のオブジェクトが null の場合にも true を返します (ここsender
を確認してください)。これにより、複数の比較が true である(複数の sporClick 呼び出しが実行された) 可能性がありnull
ますClick
。あなたが投稿したものに。switch
c0、c1、c2、および c3 が定数式の場合、 このようなコードは use ステートメントに変換できますが、ご覧のとおり、これらはControl
クラスから派生した型のオブジェクトを参照する変数であり、 case
(チェックここで)。したがって、このコードを次のように変換することはできませんswitch/case