创建适用于非整数类型的 Switch 函数






2.42/5 (8投票s)
一个适用于非整型类型的 Switch 函数。
引言
当机器与人类通信时,通常需要 switch 语句。“switch 语句是一种控制语句,它通过将控制权传递到其主体内的其中一个 case 语句来处理多个选择和枚举”(MSDN)。这些 case 必须始终是常量且为整型。这意味着不能使用 doubles 和 floats,并且所有其他值必须是常量。
这段代码使用模板和委托来创建一个简单的类似 switch
的结构,它可以用于任何类型的 case。这些 case 在 SortedList<TKey, TValue>
中排序。
该代码使用匿名方法来执行 case
语句中的工作。
使用代码
在下面的示例代码中,为每个 case 显示一个消息框。
Switch<string> switcher = new Switch<string>(); //Create Object
switcher.AddCase("Hello", delegate(object[] args)//Add cases
{ MessageBox.Show("Hello"); });
switcher.AddCase("Goodbye", delegate(object[] args)
{ MessageBox.Show("Goodbye"); });
switcher.AddCase("Morning", delegate(object[] args)
{ MessageBox.Show("Morning"); });
switcher.AddCase("Evening", delegate(object[] args)
{ MessageBox.Show("Evening"); });
switcher.AddCase("Afternoon", delegate(object[] args)
{ MessageBox.Show("Afternoon"); });
switcher.AddDefault(delegate (object [] args)
{ MessageBox.Show("Default"); });//Add a default case.
switcher.DoSwitch(StringTextBox.Text); //Do Switch
我也为 doubles 创建了一个类。这个版本允许你指定值可以变化的容差。
DoubleSwitch switcher = new DoubleSwitch();//Create Object
switcher.AddCase(1, delegate(object[] args)//Add cases
{ MessageBox.Show("1"); });
switcher.AddCase(2, delegate(object[] args)
{ MessageBox.Show("2"); });
switcher.AddCase(2.5, delegate(object[] args)
{ MessageBox.Show("2.5"); });
switcher.AddCase(3, delegate(object[] args)
{ MessageBox.Show("3"); });
switcher.AddCase(1000, delegate(object[] args)
{ MessageBox.Show("1000"); });
switcher.AddDefault(delegate (object [] args)
{ MessageBox.Show("Default"); });//Add a default case
switcher.DoSwitch((double) DoubleTextBox.Value, 0.1d); //Do switch.
上面的代码允许 0.1 的容差。这意味着 2.59 将调用 2.5 case...
此外,可以创建特定的类,只需从基类派生,并实现“DoSwitch
”函数即可。
尝试演示程序,以便更好地了解...
历史
这是第一个版本... 享受吧!