You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:22:39