Dot-Net

如何將可選參數傳遞給 C# 中的方法?

  • June 15, 2021

如何將可選參數傳遞給 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()人處理所有可能的命令。

引用自:https://stackoverflow.com/questions/3360727