コンストラクタの引数によってMethod()
の内容を変えたいです。
条件分岐(Switch)を使うのとデリゲートを使う方法を考えたのですが、Method()
は頻回(具体的には約100ms毎)に実行するのでできるだけ処理を早くしたいです。
どちらが速く処理できるのか、また他にいい方法があれば教えて下さい。よろしくお願いします。
c#
1//共通部分 2class Program 3 { 4 static void Main(string[] args) 5 { 6 Sample sample = new Sample(Type.B); //"BBB"と表示 7 sample.Method(); 8 Console.ReadLine(); 9 } 10 } 11public enum Type 12 { 13 A, B, C 14 }
c#
1//毎回switchで条件分岐 2public class Sample 3 { 4 public Sample(Type type) 5 { 6 this.type = type; 7 } 8 Type type; 9 public void Method() 10 { 11 switch (type) 12 { 13 case Type.A: 14 A(); 15 break; 16 case Type.B: 17 B(); 18 break; 19 case Type.C: 20 C(); 21 break; 22 } 23 } 24 public void A() 25 { 26 Console.WriteLine("AAA"); 27 } 28 public void B() 29 { 30 Console.WriteLine("BBB"); 31 } 32 public void C() 33 { 34 Console.WriteLine("CCC"); 35 } 36 }
c#
1//条件分岐は初回のみ、毎回デリゲート経由 2public class Sample 3 { 4 public Sample(Type type) 5 { 6 switch (type) 7 { 8 case Type.A: 9 Method = A; 10 break; 11 case Type.B: 12 Method = B; 13 break; 14 case Type.C: 15 Method = C; 16 break; 17 } 18 } 19 public Action Method; 20 public void A() 21 { 22 Console.WriteLine("AAA"); 23 } 24 public void B() 25 { 26 Console.WriteLine("BBB"); 27 } 28 public void C() 29 { 30 Console.WriteLine("CCC"); 31 } 32 }
回答2件
あなたの回答
tips
プレビュー