很長時間沒有使用過C#,裏面的一些小細節也忘得差不多了。最近有個小項目需要使用ASP.NET,這裏將遇到的問題或疑問記錄下來。
今天遇到的一個問題是 使用params變長參數時,如果不傳入實參,方法裏的參數是null?還是長度爲0? 憑直覺,我認爲參數爲空,爲了保險起見,同時添加了參數長度是否爲零的判斷。雖然這樣解決了問題,但心裏有些不舒服,因爲這樣的判斷不光添加了沒必要的代碼,在頻繁的函數調用同時要求速度的情況下還會影響性能。所以最後還是花幾分鐘時間弄明白這個問題。
測試代碼如下:
using System;
public class Test
{
public static void Main()
{
string str;
str="hi";
Console.WriteLine(str);
Print();
}
public static void Print(params string[] text)
{
Console.WriteLine(text.Length);
Console.WriteLine(text==null);
foreach(string t in text)
{
Console.WriteLine(t);
}
}
}
測試結果:
hi
0
False
結論很明顯:在使用變長參數params時,如果調用函數時沒有傳入實參,參數數組不爲空,長度爲0。