C#方法Extra
上次說的只是方法的一些基本東西,今天講講多載和 Lambda 運算式,
多載
方法的多載(overload)指的是同一個名字的方法,有著不一樣的方法簽名(method signature),函式體里面的內容也可以不一樣,方法的簽名包括方法的名稱和一個引數串列(方法的引數順序和型別),注意,回傳值不是方法的簽名,實體建構式簽名由它的每一個形參(從左到右 的順序)的型別和種類(值、參考或輸出引數)組成,
平時用到多載是為了在給定了引數串列和一組候選函式成員的情況下,選擇一個最佳函式成員來實施呼叫,下面看一段代碼:
using System;
namespace SomeNotes
{
class Program
{
public static void Main(string[] args)
{
Student stu = new Student();
Console.WriteLine(stu.Add(1, 2));
Console.WriteLine(stu.Add(1.2, 2.3));
stu.Add();
}
}
class Student
{
public int Add(int a, int b)
{
return a + b;
}
public double Add(double a, double b)
{
return a + b;
}
public void Add()
{
Console.WriteLine("No parameter!");
}
}
}
上面的Student類里面有三個都叫做Add的方法,但是這三個方法的簽名都不一樣,他們就構成了多載的關系,stu呼叫Add函式的時候,根據給的引數不一樣,呼叫的Add也不一樣,

在寫多載的時候,當你打出Add這個方法的時候,Visual Studio會提示你有三個多載,
最后的結果如下圖所示:

最后再強調一點:函式的回傳值不是函式的簽名!
Lambda運算式
Lambda運算式是一個匿名函式,用于節約代碼量,提高寫程式的效率,
Lambda運算式的語法為:( parameter ) => statement ,引數串列可以有多個引數,也可以沒有引數(void),引數的型別可以顯式宣告,也可以隱式宣告,因為編譯器能根據背景關系推斷引數的型別,下面舉幾個例子:
(x, y) => x * y //多引數,隱式型別=> 運算式
x => x * 5 //單引數, 隱式型別=>運算式
x => { return x * 5; } //單引數,隱式型別=>陳述句塊
(int x) => x * 5 //單引數,顯式型別=>運算式
(int x) => { return x * 5; } //單引數,顯式型別=>陳述句塊
() => Console.WriteLine() //無引數
這些都是有效的宣告,其實Lambda運算式也十分形象,就是把左邊括號里面的引數,傳到右邊的運算式里面,一般都是一個方法,為什么說Lambda運算式是一個匿名函式呢?你可以看看運算式里面有沒有出現過方法的名字,它里面只包括了原來方法體里面的一些邏輯,卻沒有為方法命名,這就體現了匿名方法的好處,省略了宣告的步驟,只需要給出邏輯,就能完成這個方法,
Lambda運算式更多情況下用在事件、委托里面,因為還沒說到,所以這部分先挖坑了,到時候說委托和事件的時候會給例子出來的,(不是我懶)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/139386.html
標籤:.NET技术
上一篇:[轉]Regions and Clipping in GDI+
下一篇:C#方法Extra
