C語言的printf函數,參數的數量可以是可變的。使用 va_start 和 va_end 實現。
C++中,實現參數可變,可以用 overload。如果參數數量不是很多的話,可以一個參數實現一個函數,兩個參數再實現一個函數,三個參數再實現一個函數...
或者使用C的方案。
C#中,也可以用 overload?;蛘?params 關鍵字。
下述代碼除了演示 params 實現變數量的參數,還演示了 這些參數的類型不必相同。
下述代碼的輸出是:
one
two
aa
1
2
代碼如下:
static void Main(string[] args)
{
Program p = new Program();
foo(1, 2, "one", "two", p);
Console.WriteLine();
foo("one", "two", p, 1, 2 );
}
public static void foo(params object[] list)
{
foreach(object o in list)
{
if (o.GetType() == typeof(int))
{
Console.WriteLine(o);
}
else if (o.GetType() == typeof(string))
{
Console.WriteLine(o);
}
else if (o.GetType() == typeof(Program))
{
Console.WriteLine(((Program)o).value);
}
}
}
}
}
新聞熱點
疑難解答