我寫了一個簡單的程序,使用關鍵字params
來獲取參數並將它們寫入控制檯。我想要/希望發生什麼,以及當我將單個數組傳遞給具有params
標記的參數時,將發生什麼C# documentation states是該數組將成爲params
數組中的第一個元素。下面是一些示例代碼:params關鍵字將數組作爲單個參數解釋數組的內容作爲其所有參數
public static void Main()
{
Paramtest(new object[] { "hi", "wow", 78 });
Console.ReadKey();
}
public static void Paramtest(params object[] args) {
foreach (object o in args) {
Console.WriteLine("{0} is a type of {1}.", o.ToString(), o.GetType());
}
}
我應該看到的是,在控制檯上的一行,指出:
System.object[] is a type of System.object[].
我做什麼看到的是三線寫作:
hi is a type of System.String.
wow is a type of System.String.
78 is a type of System.Int32.
我發現在調用Paramtest
後調用另一個參數數組,如下所示:Paramtest(new object[] { "hi", "wow", 78 }, String.Empty);
,產生了預期的結果(加上空字符串),所以這可能是解決此問題的一種方法,但它對我而言並不是優雅或者不錯的主意。從文檔所述,這不應該發生。有沒有任何優雅解決這個問題?
的可能的複製[C#PARAMS明顯的編譯器缺陷(C#5.0)](http://stackoverflow.com/questions/9709642/c-sharp-params -apparent-compiler-bug-c-5-0) –
是的,我認爲它是:( 不幸的是,在發佈我的問題之前我沒有看到那篇文章。 –