:
var switchCaseAlternative = new Dictionary<string, Action>()
{
{"case1",() => {System.Diagnostic.Debug.WriteLine("One");}},
{"case2",() => {System.Diagnostic.Debug.WriteLine("Two");}}
};
その後、使用する命令は次のようになります。スイッチとは、異なる値と同じようなことをする必要があることを意味します。希望、以下その一例が、私の考えを理解するのに役立ちます。
public enum SexTypes { Unknown, Male, Female }
public abstract class Human
{
protected string HelloMessage = "common message part";
public abstract SexTypes Sex { get; }
public void SayHello() => Console.WriteLine(HelloMessage); //good way
public void SayHelloWithSwitch() //bad way
{
switch(Sex)
{
case SexTypes.Unknown:
Console.WriteLine(HelloMessage);
break;
case SexTypes.Male:
Console.WriteLine(HelloMessage + " some modifications");
break;
case SexTypes.Female:
Console.WriteLine("new other message");
break;
default:
throw new ArgumentOutOfRangeException();
}
}
}
public class Boy : Human
{
public override SexTypes Sex => SexTypes.Male;
protected new string HelloMessage => base.HelloMessage += " , some message modifications";
}
public class Girl : Human
{
public override SexTypes Sex => SexTypes.Female;
protected new string HelloMessage = "overwrite all message";
}
それはあなたがコーディングされているかに依存し、switch文は、「スマートコーディング」を定義し、クリーンで効率的な – BugFinder
です。スイッチ/ケースブロックは、C#言語仕様の他のすべてと同じように、ツールです。それは他の何かがより適しているのに理想的な場所や他の場所を持っています。私はあなたがそれらを入れ子にしてはいけないと言います。 – Abion47
それは異なります。多くのケースがあり、将来的にケースが追加される可能性がある場合は、ルックアップテーブルの形式が適している可能性があります。 –