コードを詳しく調べると、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。あなたが投稿したものに。switchc0、c1、c2、および c3 が定数式の場合、 このようなコードは use ステートメントに変換できますが、ご覧のとおり、これらはControlクラスから派生した型のオブジェクトを参照する変数であり、 case(チェックここで)。したがって、このコードを次のように変換することはできませんswitch/case