在函式中宣告子函式(內部函式):
需在函式中宣告一個函式變數,這個函式變數就是子函式,寫法如:
Func<參數一的型別, 參數二的型別…, 回傳型別> 子函式名稱 = new Func<參數一的型別, 參數二的型別…, 回傳型別>( (參數一名稱, 參數二名稱…) =>
{
//子函式內容
});
呼叫子函式的方法同於一般函式,即:
子函式名稱(參數一, 參數二…);
※ 注意:子函式為局域變數,離開了母函式範圍後,就不能呼叫子函式。
※ 注意:用以上形式所寫的子函式,都必須要有回傳變數。若想寫一個無回傳變數的子函式,應把Func改用Action,如下:
Action<參數一的型別, 參數二的型別…> 子函式名稱 = new Action <參數一的型別, 參數二的型別…>( (參數一名稱, 參數二名稱…) =>
{
//子函式內容
});
呼叫子函式的方法同於一般函式,即:
子函式名稱(參數一, 參數二…);
※ 注意:若子函式還是個遞迴函式,那麼:
Func<參數一的型別, 參數二的型別…, 回傳型別> 子函式名稱 = new Func<參數一的型別, 參數二的型別…, 回傳型別>( (參數一名稱, 參數二名稱…) =>
{
子函式名稱(參數一, 參數二…);
});
這樣的程式碼,無法編譯。應兩段式宣告,先將函式宣告成null,再以委派的方式宣告函式:
Func<參數一的型別, 參數二的型別…, 回傳型別> 子函式名稱 = null;
子函式名稱 = delegate(參數一的型別 參數一, 參數二的型別 參數二…)
{
子函式名稱(參數一, 參數二…);
};
留言列表