C#中是否有等同于func_get_arg(php)的内容?
func_get_arg(int $ arg_num):
从用户定义的函数的参数列表中获取指定的参数。
此函数可与func_get_args()和func_num_args()一起使用,以允许用户定义的函数接受可变长度的参数列表。
它基本上意味着索引可用于获取参数值...
由于
答案 0 :(得分:3)
C#是静态类型的,因此功能签名重要。您不能只使用任意数量的参数调用方法,这实际上意味着不需要func_get_arg
。
也就是说,如果你有一个像这样的方法,你可以非常接近:
void MyMethod(params object[] args)
{
var indexOfArgument = 42; // or whatever
var valueOfArgument = args[indexOfArgument]; // should also check array bounds
}
当然,如果你的所有参数都输入为System.Object
,那么你可以用它们做多少,但从句法的角度来看它很接近(另外,你也可以有一个方法)接受任何类型params T[] args
的{{1}}。
答案 1 :(得分:0)
在C#中有一个方法“__arglist()” 或者您可以轻松地使函数接受可变数量的参数,例如
int Average(params int[] ints)
{
int total = 0;
foreach(int i in ints) // loop to the number of parameters
total += i;
return (ints.Length > 0 ? total / ints.Length : 0);
}
答案 2 :(得分:0)
据我了解,PHP中func_get_arg的目的是为函数提供可变数量的参数。这是C#中的等价物:
public void Foo(string realArg, int anotherRealArg, params int[] variableArgs)
{
Console.WriteLine("My real string argument was " + realArg);
Console.WriteLine("My real integer argument was " + anotherRealArg);
Console.WriteLine("And I was given " + variableArgs.Length + " extra arguments");
}
// Usage
Foo("Bar", 1, 2, 3, 4, 5);
在方法中,variableArgs
是常规数组。在访问它之前,您需要检查其长度以确保您没有获得IndexOutOfRangeException。