C#中使用Lambda表達式簡化代碼

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表達式寫的代碼十分優美。


推薦閱讀:

TAG:編程語言 | Lambda表達式 | C |