在C#中是否有相当于func_get_arg(php)?C#中func_get_arg的等价物?
func_get_arg(INT $ arg_num):
获取从一个用户定义的函数的参数列表指定的参数。
该函数可以与func_get_args()和func_num_args()一起使用,以允许用户定义的函数接受可变长度参数列表。
这基本上意味着指数可以用来获取参数值...
感谢
在C#中是否有相当于func_get_arg(php)?C#中func_get_arg的等价物?
func_get_arg(INT $ arg_num):
获取从一个用户定义的函数的参数列表指定的参数。
该函数可以与func_get_args()和func_num_args()一起使用,以允许用户定义的函数接受可变长度参数列表。
这基本上意味着指数可以用来获取参数值...
感谢
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
任何类型T
)。
有一个方法“__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);
}
据我了解,func_get_arg在PHP的目的是为了有一个函数的可变数量的参数。这里的equivilent到在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。
检查这一个:http://stackoverflow.com/questions/214086/how-can-you-get-the-names-of-method-parameters-in-c –
我不知道什么离手这是在c#的基本框架内完成的。有一些依赖注入框架可以支持类似的东西。知道你想要完成什么会是有帮助的。 –
问你想做什么,现在你想怎么做:) – 2011-12-07 23:05:01