是否有這樣的需求在創建函數時參數個數不固定,又不想使用重載,那麼下面這個技術就比較適合。
相信你一定見過下面這的代碼:
string.Format("我叫:{0}今年:{1}歲.", "師傅", 29);
Format 就是string的一個函數,第一個參數是固定的字符串類型,那麼後面的參數就不確定是具體什麼數據類型和後續要傳入多少個參數。
如果要用重載的話,每增加一個參數就需要增加一個重載比較麻煩。
例如:
public void Add(string sql, string name) { } public void Add(string sql, string name,int age) { } public void Add(string sql, string name,int age,int gender) { }
那麼我們如何能像string.Format一樣根據實際情況來傳遞參數,當然是可以的。
定義一個函數,其中在參數類型前加上params關鍵字,如果要使用params定義的話必須是最後一個參數,
比如你有3個參數那麼第3個參數一定是params纔可以。
public void Add(string sql, params object[] attribute) { }
只有基礎參數的傳遞,第二個參數可以不傳遞調用:
Test t = new Test(); t.Add("我是");
帶有參數的方式調用:
Test t = new Test(); t.Add("我是", "師傅", 29, 1);