C#中如何将单个数组作为独立参数传入函数?
在C#中能否将单个数组作为独立参数传递给函数?
我想实现类似这样的调用:
Func<int, int, int> sum = (int a, int b) => { return a + b; }; // sum(1, 2); 此调用有效,返回3 sum([1,2]); // 这是我期望的调用方式
能否让最后一行代码生效?
注意事项
- 我知道可以修改委托让它接收单个
int[]作为参数,但实际场景中无法修改委托。 - 实际场景中的参数类型并不统一,可能是
int、string、object等混合类型。
参考:PHP中可通过call_user_func_array()实现类似功能。
补充场景说明
实际开发中,我希望编写一个通用函数,接收委托及所有所需参数,而非像下面这样编写不同参数数量的重载:
public void OneParam<T1, TOut>(Func<T1, TOut> func, T1 p1) { // 调用前执行一些操作 func.Invoke(p1); } public void TwoParam<T1, T2, TOut>(Func<T1, T2, TOut> func, T1 p1, T2 p2) { // 调用前执行相同操作 func.Invoke(p1, p2); }
我期望只用一个函数就能处理任意参数数量的委托,并将参数传入委托。
结论
根据相关回答,此需求无法实现。我想要的是params的反向功能,目前C#中没有对应的机制。这是合理的,因为C#开发者本身也需要手动编写不同参数数量的委托。
内容的提问来源于stack exchange,提问作者rCgLT
相关产品推荐
相关产品推荐

