相关疑难解决方法(0)

lambda作为默认参数

我正在寻找一个问题的答案从枚举得到下一个N元素没有找到任何令人满意和酿造我自己.我想出的是

IEnumerable<T> Chunk<T, R>(IEnumerable<R> src, int n, Func<IEnumerable<R>, T> action){
  IEnumerable<R> head;
  IEnumerable<R> tail = src;
  while (tail.Any())
  {
    head = tail.Take(n);
    tail = tail.Skip(n);
    yield return action(head);
  }
}
Run Code Online (Sandbox Code Playgroud)

我真的想要的是让动作有默认值t=>t,但我无法弄清楚如何使它成为默认参数.签名IEnumerable<T> Chunk<T, R>(IEnumerable<R> src, int n, Func<IEnumerable<R>, T> action = t=>t)给出了语法错误.

我的问题是,我该怎么做?

我认为这与将lambda函数指定为默认参数但与C#而不是C++相同

作为一个方面说明,我知道这不作任何语法差别,但它会更容易阅读,如果我切换TR

c#

5
推荐指数
1
解决办法
2203
查看次数

将Lambda表达式声明为类常量字段

为什么不能声明类型为的类常量Lambda Expression。我想要这样的东西:

class MyClass
{
   public const Expression<Func<string,bool>> MyExpr = (string s) => s=="Hello!";
}
Run Code Online (Sandbox Code Playgroud)

但是我得到了编译错误: Expression cannot contain anonymous methods or lambda expressions

c# lambda expression field class

3
推荐指数
1
解决办法
2173
查看次数

标签 统计

c# ×2

class ×1

expression ×1

field ×1

lambda ×1