加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 具有可变数量参数的匿名方法

发布时间:2020-12-15 23:28:30 所属栏目:百科 来源:网络整理
导读:我有以下代码创建一个匿名类型的实例,该方法作为唯一成员: var test = new { f = new Funcint,int(x = x)}; 我想实现一个函数,它总结了所有参数,无论传递了多少参数.这是常规方法的样子: int Sum(params int[] values) { int res = 0; foreach(var i in va
我有以下代码创建一个匿名类型的实例,该方法作为唯一成员:

var test = new { 
    f = new Func<int,int>(x => x)
};

我想实现一个函数,它总结了所有参数,无论传递了多少参数.这是常规方法的样子:

int Sum(params int[] values) { 
    int res = 0;
    foreach(var i in values) res += i;
    return res;
}

但是,我不知道这是否适用于匿名方法.我尝试了Func< params int [],int>,但显然不会编译.有没有办法用变量参数列表编写匿名方法,或者至少使用可选的args?

编辑:我想要实现的是调用这样的(匿名)求和方法:test.Sum(1,2,3,4).

解决方法

为了实现这一点,首先需要声明一个委托:

delegate int ParamsDelegate(params int[] args);

然后在分配匿名类型对象的method属性时使用它.

var test = new {
    Sum = new ParamsDelegate(x => x.Sum()) // x is an array
};

然后你有两种方法来调用这个方法:

1)int sum = test.Sum(new [] {1,4});

2)int sum = test.Sum(1,4);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读