標籤:參數 表達 new 方法 amp ica stat 等於 需要
建議150:使用匿名方法、Lambda運算式代替方法
方法體如果過小(如小於3行),專門為此定義一個方法就會顯得過於繁瑣。比如:
static void SampeMethod() { List<string> list=new List<string>(){"Mike","Rose","Steve"}; var mike = list.Find(new Predicate<string>(HaveLengthFive)); Console.WriteLine(mike); } static bool HaveLengthFive(string value) { return value.Length == 5; }
上面的代碼中,SampleMethod方法需要完成的功能是查看list中有沒有長度等於5的元素。Predicate是一個委託,它接收元素值,並返回元素是否符合要求這一結果。而真正工作的代碼只有1行。有些繁瑣,所以要重構:
static void SampeMethod() { List<string> list=new List<string>(){"Mike","Rose","Steve"}; var mike = list.Find(delegate(string value) { return value.Length == 5; }); Console.WriteLine(mike); }
由delegate引領的語句就是一個匿名方法。其次,匿名方法經過編譯器編譯之後,就和普通方法沒有任何區別了。匿名方法帶來的只是簡化程式員的部分工作而已。
更好的簡化方法就是Lambda運算式。Lambda運算式有符號“=>”串連(讀作“goes to”),符號左邊是參數列表,右邊是方法體。Lambda運算式更進一步簡化了匿名方法的文法:
static void SampeMethod() { List<string> list=new List<string>(){"Mike","Rose","Steve"}; var mike = list.Find(value => value.Length == 5); Console.WriteLine(mike); }
轉自:《編寫高品質代碼改善C#程式的157個建議》陸敏技
【轉】編寫高品質代碼改善C#程式的157個建議——建議150:使用匿名方法、Lambda運算式代替方法