程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#一些實用的,容易被遺忘的特性,經驗和技巧(1)

C#一些實用的,容易被遺忘的特性,經驗和技巧(1)

編輯:關於C語言

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

下面是運行的結果圖:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved