C#中使用Lambda表達式簡化代碼
05-17
C#中使用Lambda表達式簡化代碼
推薦閱讀:
之前的文章介紹了匿名方法的使用,也舉例表示在不需要使用傳入參數時匿名方法可以省略它不寫,但有時我們的委託需要對傳入參數進行處理,此時Lambda表達式的出現讓這樣的程序寫起來更加簡單。
例如匿名方法中的定時器委託可以寫成這樣:
ShowTimer.Tick += (o, e) => tbkNum.Text = e.ToString();
上面的例子沒有什麼實際意義,我們來列舉程序開發過程中經常用到的List容器例子。
假設有一個Pet類:
class Pet{ ... public String Name; ...}
在一個Pet的List容器中找出名為「Tom」的寵物將變得十分簡單:
List<Pet> MyPets = new List<Pet>();...Pet TomPet = MyPets.Find(_pet => _pet.Name=="Tom");
_pet只是傳入參數的代號,在不違法的情況下可以任意取,「=>」後的語句即為實際處理的內容。
最後對比一下三種寫法:
//傳統委託寫法Pet TomPet = MyPets.Find(FindTom);...Boolean FindTom(Pet pet){ return pet.Name == "Tom";}//匿名委託寫法Pet TomPet = MyPets.Find(delegate (Pet _pet){ return _pet.Name == "Tom"; });//Lambda表達式寫法Pet TomPet = MyPets.Find(_pet => _pet.Name=="Tom");
通過對比可以看到,Lambda表達式寫的代碼十分優美。
推薦閱讀: