我有這樣的測試代碼:C#函數值
void func1(string a, params string[] p)
{
func1(a, true, p);
}
void func1(string a, bool b, params string[] p)
{
//...
}
void func2(string a, bool b = true, params string[] p)
{
//...
}
void exec()
{
func1("a", "p1", "p2");
func2("a", "p1", "p2");
}
是func1
和func2
等於?
有沒有錯誤,當我創建func2
,但是,當我嘗試使用func2
像EXEC(使用可選的值),編譯器顯示錯誤This function has some invalid arguments
。
我認爲func1
和func2
對於那些會像API一樣使用此功能的人來說是相等的。
這段代碼有什麼問題? 對於具有可選參數值的函數,我可以使用這種方法嗎?
我喜歡這個問題......但是在實際編寫這樣的代碼之前,請三思而後行 - 當您剛剛編寫代碼時,您已經無法推理什麼以及如何調用。想象一下,當別人(甚至你2個月後)將嘗試使用它...你真的不希望在您的編碼規範意見「始終指定所有參數XXXX功能,否則你會得到奇怪的錯誤/不可預知的行爲...「 – 2013-02-08 17:14:17