C# 默認參數/可選參數需要注意


在使用C#的默認參數/可選參數的時候,需要注意,參數的默認值是在編譯的時候,自動加入調用方的。

 

如我有這樣一個方法:

 1     public class Name
 2     {
 3         public void Test(Boolean isPass, String name = "")
 4         {
 5             if (String.IsNullOrWhiteSpace(name))
 6                 Console.WriteLine("name is empty.");
 7             else
 8                 Console.WriteLine("name have value.");
 9         }
10     }

另一個dll中的方法掉用此方法:

1     public void Test()
2     {
3         DAL.Name c = new DAL.Name();
4         c.Test(true);
5     }

 

調用方最終編譯的結果是:

public void Test()
{
      Name c new Name();
      c.Test(true"");
}

可以看到,編譯的時候,把我們的默認值追加到了方法的調用方去了。因此需要注意一個問題:

如果我們的dll是公共組建,則最好不要使用默認參數,使用重載方法來實現不同參數的效果;因為使用默認參數的方法,如果只重新編譯了dll,而沒有重新編譯引用的dll,則會調用出錯

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM