突然想到,想要通过名字来获得枚举的值,看了不少的资料,发现上面都只是解释枚举的语法而已,对于它的实际应用,一点也不提及,难道只能用switch来判断?不好吧,这样也未免太土了点。后来发现了枚举还有这样的用法,真的很使用,看代码:
Code
namespace EnumTest
{
enum date { sun, mon, tue, wes, thu, fri, sat }
class Program
{
static void Main(string[] args)
{
Console.WriteLine("输入星期的名称:");
string name = Console.ReadLine();
//Type参数表示要转换成的枚举的类型,true指示忽略大小写
object obj = Enum.Parse(typeof(date), name, true);
Console.WriteLine("输出星期的数字:");
Console.WriteLine(obj + ":" + (int)obj);
}
}
}
再来看一下运行结果图:
怎么样,是不是觉得很实用啊。
接下来要介绍的是委托(delegate),有对delegate不太了解的人可以看一下我以前写的一个随笔什么是委托(delegate) 。我们平时使用委托都是单个的指定委托的方法,但是如果我们需要通过参数动态的指定呢?难道也是用switch?这样做太麻烦了,还有更好的方法,看代码:
Code
namespace DelegateTest
{
class Person
{
public void FirstMethod()
{
Console.WriteLine("这是第一个方法!");
}
public void SecondMethod()
{
Console.WriteLine("这是第二个方法!");
}
}
delegate void dele();
class Program
{
static void Main(string[] args)
{
Console.WriteLine("输入方法的名字:");
string name = Console.ReadLine();
Person p = new Person();
//Type参数是要转换的委托的类型,p是要调用的委托的实例,true指示忽略大小写
dele d = Delegate.CreateDelegate(typeof(dele), p, name + "Method", true) as dele;
d.Invoke();
Console.WriteLine("输入方法的名字:");
name = Console.ReadLine();
d = Delegate.CreateDelegate(typeof(dele), p, name + "method", true) as dele;
d.Invoke();
}
}
}
下面是运行的结果图: