close

在函式中宣告子函式(內部函式)

需在函式中宣告一個函式變數,這個函式變數就是子函式,寫法如:

Func<參數一的型別, 參數二的型別…, 回傳型別> 子函式名稱 = new Func<參數一的型別, 參數二的型別…, 回傳型別>( (參數一名稱, 參數二名稱…) =>

{

    //子函式內容

}); 

呼叫子函式的方法同於一般函式,即:

子函式名稱(參數一, 參數二…);

注意:子函式為局域變數,離開了母函式範圍後,就不能呼叫子函式。

注意:用以上形式所寫的子函式,都必須要有回傳變數。若想寫一個無回傳變數的子函式,應把Func改用Action,如下:

Action<參數一的型別, 參數二的型別…> 子函式名稱 = new Action <參數一的型別, 參數二的型別…>( (參數一名稱, 參數二名稱…) =>

{

    //子函式內容

}); 

呼叫子函式的方法同於一般函式,即:

子函式名稱(參數一, 參數二…);

注意:若子函式還是個遞迴函式,那麼:

Func<參數一的型別, 參數二的型別…, 回傳型別> 子函式名稱 = new Func<參數一的型別, 參數二的型別…, 回傳型別>( (參數一名稱, 參數二名稱…) =>

{

    子函式名稱(參數一, 參數二…);

});

這樣的程式碼,無法編譯。應兩段式宣告,先將函式宣告成null,再以委派的方式宣告函式:

Func<參數一的型別, 參數二的型別…, 回傳型別> 子函式名稱 = null;

子函式名稱 = delegate(參數一的型別 參數一, 參數二的型別 參數二…)

{

    子函式名稱(參數一, 參數二…);

};

 

 

arrow
arrow

    埃伯 發表在 痞客邦 留言(0) 人氣()