方法、簽章、事件
方法簽章
方法被宣告在class或struct之中,其需要指定
- 可存取權限(存取修飾詞)
- 回傳值
- 方法名稱
- 傳入參數
public void Speak(string what)
{
// TODO
}
以此程式碼為例,我指定一個方法,其方法簽章為
- 無回傳值
- 方法名稱Speak
- 傳入參數型別string
- 可公開存取(public)
同一個類別不能存在同樣的方法簽章
方法參數
- 當方法被使用時,必須傳參數到此方法
- 傳進來的參數,須符合參數的型別
- 如果兩個方法名稱一樣,會自動找到符合方法簽章的方法
public class Customer
{
public int Points { get; private set; }
// 公開方法、回傳值int 、名稱AddPoint、傳入一個參數、傳入型別int
public int AddPoints(int pointsToAdd)
{
this.Points += pointsToAdd;
return Points;
}
// 公開方法、回傳值int 、名稱AddPoint、傳入兩個參數、傳入型別int
public int AddPoints(int pointsToAdd, int masPoints)
{
Points += pointsToAdd;
if (this.Points > masPoints )
{
this.Points = masPoints;
}
return this.Points;
}
}
class Program
{
static void Main(string[] args)
{
var customer = new Customer();
// 一定要傳參數,且會自動對應到該方法
customer.AddPoints(10);
customer.AddPoints(10, 20);
}
}
參數預設值
- 方法的參數可給予預設值
- 使用此方法時,預設值可不傳入
- 預設參數,一定放在必傳參數後面
public class Customer
{
public void Pay(int amount, string name = "Kevin", string method = "Cash")
{
// TODO
}
}
class Program
{
static void Main(string[] args)
{
var customer = new Customer();
// 可傳入預設參數
customer.Pay(100, "Bob", "Credit");
// 也可選擇不傳入預設參數
customer.Pay(100);
}
}
具名參數
- 開發者,可以不用按照順序傳入參數,可用指定的方式傳入
- 在使用上,可以更清楚傳入的參數是什麼
class Program
{
static void Main(string[] args)
{
var customer = new Customer();
// 用具名的方式,可直接傳入第三個參數
customer.Pay(100, method : "Credit");
}
}
事件
事件的內容還蠻多的,所以另外寫一篇委派和事件的文章,來說明事件。
一天一分享,身體好健康。
該追究的不是過去的原因,而是現在的目的。