[英]Create function to add commands to custom program
我以前有其他編程語言的經驗,但是我決定嘗試使用某些C#。 我一直在嘗試找到一種創建函數的方法,該方法將允許我為命令創建其他函數
例:
addCommand("help", public PrintHelp(){ Console.WriteLine("blah blah blah"); });
我只是不確定如何創建函數,以便它接受另一個函數作為參數,然后可以再次調用它。
或者,我希望能夠創建一個可以保存如下功能的對象:
Command Help = new Command;
Help.Function = public void printHelp() { Console.WriteLine("blah blah blah"); };
Help.Command = "help";
第二個實際上是理想的。 我只是通過以下方式嘗試了第一種方式:
public void AddCommand(string Command, delegate function){
cmd = Command;
FUNC = function;
}
我認為您正在尋找Action<T>
和Function<T,Result>
。 請參考此帖子以獲取示例用法,並在此處獲取MSDN文檔(特定的MSDN鏈接提供了大量示例)。
本質上,使用Action<T>
可以調用使用lambda表達式的方法,並將Action<T>
作為參數傳遞給另一個函數(即,將函數作為參數傳遞)。 有一些使用C#使用委托關鍵字執行此操作的標准方法,但這是舊功能。 如果您正在尋找與實函數指針等效的對象,則C#不會直接提供該構造(它是通過委托關鍵字間接實現的)。 希望這可以幫助!
C#公開了Action<T ... Tn>
和Func<T ... Tn, TResult>
用於將函數作為參數傳遞。
Action
表示一個無效方法調用,而Func
表示一個返回TResult
類型的委托。 這兩個類都具有需要任意數量參數的重載。
在您的示例中,您的addCommand
簽名如下所示:
public void addCommand(string command, Action action);
然后,您可以使用lambda表達式進行調用:
addComand("help", () => { Console.WriteLine("blah blah blah") } );
或傳入方法組:
public void printHelp()
{
Console.WriteLine( "blah blah blah" );
}
// In calling code:
addCommand("help", printHelp);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.