Dot-Net
如何將可選參數傳遞給 C# 中的方法?
如何將可選參數傳遞給 C# 中的方法?
假設我創建了一個名為 SendCommand 的方法
public void SendCommand(string command,string strfileName) { if (command == "NLST *" ) //Listing Files from Server. { //code } else if (command == "STOR " + Path.GetFileName(uploadfilename)) //Uploading file to Server { //code } else if ... }現在我想在 main 方法中呼叫這個方法,比如
SendCommand("STOR ", filename); SendCommand("LIST"); // In this case i don't want to pass the second parameter如何做到這一點?
在 .NET 4 之前,您需要重載該方法:
public void sendCommand(String command) { sendCommand(command, null); }.NET 4 引入了對預設參數的支持,允許您在一行中完成所有這些操作。
public void SendCommand(String command, string strfilename = null) { //method body as in question }順便說一句,在您編寫的問題中,您也沒有在第一個範例中呼叫該方法:
Sendcommand("STOR " + filename);仍然使用一個參數,它是兩個字元串的連接。
顯而易見的答案應該是,不要那樣做。
您應該為每個命令設置一個單獨的方法,或者為每個命令設置一個命令基類和一個單獨的派生類,並使用 Execute 方法。
使用一種方法來處理所有可能的命令是糟糕的設計。
您真的不希望一個
Sendcommand()人處理所有可能的命令。