Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将数组转换为单个元素以传递给函数_C#_Arrays - Fatal编程技术网

C# 将数组转换为单个元素以传递给函数

C# 将数组转换为单个元素以传递给函数,c#,arrays,C#,Arrays,很难给出正确的标题,对此表示抱歉 我有一个不能用函数修改的类 字符串arg1,字符串arg2,…,字符串n 我有一个数组var arr=新字符串[n]{….} 如何将数组项转换为传递给函数f而无需写入 farr[0],arr[1],…,arr[n-1]?您可以考虑使用反射 在这种情况下,在调用时,您可以传递一组参数: methodInfo.Invoke(instanceOfClass, parametersArray) 请看下面的例子: 请注意,在本例中,根据文档,您有一个object[]数组

很难给出正确的标题,对此表示抱歉

我有一个不能用函数修改的类

字符串arg1,字符串arg2,…,字符串n

我有一个数组var arr=新字符串[n]{….}

如何将数组项转换为传递给函数f而无需写入


farr[0],arr[1],…,arr[n-1]?

您可以考虑使用反射

在这种情况下,在调用时,您可以传递一组参数:

methodInfo.Invoke(instanceOfClass, parametersArray)
请看下面的例子:


请注意,在本例中,根据文档,您有一个object[]数组,因此您必须处理装箱/取消装箱,不知道所有这些工作是否真的有价值,只是以普通方式传递参数。

您可能会考虑使用反射

在这种情况下,在调用时,您可以传递一组参数:

methodInfo.Invoke(instanceOfClass, parametersArray)
请看下面的例子:


请注意,在本例中,根据文档,您有一个object[]数组,因此您必须处理装箱/取消装箱,不知道所有这些工作是否真的值得,只需传递参数,通常情况下。

您可能可以使用反射,但我认为这比完整编写的20个参数还要难看


如果您只需要在一个位置使用它,我会说只需使用20个参数调用它。如果您在多个地方需要它,请在您自己的程序中创建一个包含20个参数的函数,并在您自己的程序中随时随地调用该函数。

您可能可以使用反射,但我认为这比完整编写的20个参数还要难看


如果您只需要在一个位置使用它,我会说只需使用20个参数调用它。如果您在多个地方需要它,请在您自己的程序中创建一个包含20个参数的函数,并在您自己的程序中的任何地方调用该函数。

使用反射(如MethodInfo)将是您的选择之一

[1] 获取方法f的info伪代码:

 MethodInfo[] methodInfos = typeof (TheClassWhereFuncfExists).GetMethods(BindingFlags.Public...);
[2] 使用linq获取f的方法信息

MethodInfo fmi= methodInfos.Where(item=> item.Name=="f").FirstOrDefault();
[3] 获得fmi后,可以通过编程方式调用它:

fmi.Invoke(...)

仅使用伪代码,未经过彻底测试。

使用MethodInfo等反射将是您的选择之一

[1] 获取方法f的info伪代码:

 MethodInfo[] methodInfos = typeof (TheClassWhereFuncfExists).GetMethods(BindingFlags.Public...);
[2] 使用linq获取f的方法信息

MethodInfo fmi= methodInfos.Where(item=> item.Name=="f").FirstOrDefault();
[3] 获得fmi后,可以通过编程方式调用它:

fmi.Invoke(...)

仅使用伪代码,未经过彻底测试。

您应该能够使用反射,例如,如何指定N?我的意思是,它不可能是动态的,因为你有一个有N个参数的函数?@Esailija:嗯,我可以,但是使用反射编写函数比手动编写参数更难。当然,如果他们是一些我有20@Marco您可以定义自己的函数,该函数接受参数,并使用反射来传递参数。您应该能够使用反射来传递参数。例如,N是如何指定的?我的意思是,它不可能是动态的,因为你有一个有N个参数的函数?@Esailija:嗯,我可以,但是使用反射编写函数比手动编写参数更难。当然,如果他们是一些我有20@Marco你可以定义你自己的函数,它接受参数,并使用反射来传递它们。我没有想到这一点,你是对的。几小时后我会看一看,然后再给你回复。谢谢在我的具体案例中,参数为20可能不值得,但我只是想知道我是否需要花费更长时间的东西。我关心的是代码的可读性:写下arr[0],…,arr[19]既不好笑也不可维护。。。你觉得怎么样?@Marco:好吧,如果唯一的问题是可读性和可扩展性的话,那么值得看看这个解决方案。在其他情况下,只需保持有序的工作方式即可。@Marco老实说,代码的大小并不是可维护性的首要考虑因素。在我看来,复杂度和在修改代码时生成编译错误的能力要重要得多。正如Michel Keijzers所说,我会选择20个参数,因为反射消除了强类型并增加了复杂性。我没有想到这一点,你是对的。几小时后我会看一看,然后再给你回复。谢谢在我的具体案例中,参数为20可能不值得,但我只是想知道我是否需要花费更长时间的东西。我关心的是代码的可读性:写下arr[0],…,arr[19]既不好笑也不可维护。。。你觉得怎么样?@Marco:好吧,如果唯一的问题是可读性和可扩展性的话,那么值得看看这个解决方案。在其他情况下,只需保持有序的工作方式即可。@Marco老实说,代码的大小并不是可维护性的首要考虑因素。在我看来,复杂度和在修改代码时生成编译错误的能力更为重要。正如Michel Keijzers所说,我选择20个参数,因为反射消除了强类型并增加了复杂性。