根据调用方法强制参数或可选参数

时间:2017-11-09 06:12:01

标签: c# function methods arguments parameter-passing

我有这个方法

public void downloadAndSendFile(string fileType,
                                bool IsSendMail = false, 
                                string toEmail = "", 
                                string subject = "")
{
}

我想这样做,

  • 如果用户在调用此方法时通过IsSendMail = true,那么toEmailsubject参数是强制性的

2 个答案:

答案 0 :(得分:2)

如何使用该方法的2次重载呢?

public void downloadAndSendFile(string fileType)

public void downloadAndSendFile(string fileType,
                            string toEmail, 
                            string subject)

我的理由是你根本不需要IsSendMail参数。它表示方法调用中是否还有2个参数。如果这就是全部,那么为什么不删除它并根据传入的参数做不同的事情呢?如果在方法中需要IsSendMail的值,则可以假设它在第二次重载时为true,在第一次重载时为false。

答案 1 :(得分:0)

 public void downloadAndSendFile(string fileType,
                            bool IsSendMail, 
                            string toEmail, 
                            string subject)
{
  if(IsSendMail)
  {
      ... code ... 
    Console.WriteLine(toEmail + subject);
  }
  else
 {
      ... code ... 
  }
}