突然想到,想要通過名字來獲得枚舉的值,看了不少的資料,發現上面都只是解釋枚舉的語法而已,對於它的實際應用,一點也不提及,難道只能用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();
}
}
}
下面是運行的結果圖: