相关疑难解决方法(0)

匿名方法如何省略参数列表?

我在关于匿名方法(C#编程指南)的MSDN文档中阅读本文,但我不理解省略参数列表的部分.它说:

有一种情况是匿名方法提供lambda表达式中找不到的功能.匿名方法使您可以省略参数列表.这意味着可以将匿名方法转换为具有各种签名的委托.lambda表达式无法做到这一点.

你能举一个省略匿名方法参数列表的例子吗?

c# lambda anonymous-methods anonymous-function

6
推荐指数
1
解决办法
804
查看次数

Lambda表达式委托实例或表达式树?

看完这个相关的答案后 - 我还有一个问题

lambda表达式是一个代替委托实例编写的未命名方法.编译器立即将lambda表达式转换为:

  • 委托实例.
  • Expression类型的表达式树,表示可遍历对象模型中lambda表达式内的代码.

但是什么时候它会转换它做一个委托实例 - 何时将它转换为表达式树?(没有找到关于那个的相关信息)

没有太多相关的代码 - 只是尝试使用它 - 显然两者都匹配.我不这么认为,因为我认为一个人会更好.

void Main()
{
     Foo( () => 0 );
}
  void Foo(Func<int > action)
{
    Console.WriteLine("1");
}

  void Foo(Expression<Func<int>> func)
{
    Console.WriteLine("2");
}
Run Code Online (Sandbox Code Playgroud)

这将导致错误(以下方法或属性之间不明确)

c# .net-4.5

4
推荐指数
1
解决办法
306
查看次数

"delegate {}"匹配"Func <int,int,..>"?

我在这里读Jon Skeet的答案

他的一个样本是:

  static void Main()
    {
        int x = 0;
        Foo( delegate { return x; } );
    }

    static void Foo(Func<int, int> action)
    {
        Console.WriteLine("I suspect the anonymous method...");
    }
Run Code Online (Sandbox Code Playgroud)

但是如何Foo(Func<int, int>)处理delegate { return x; }哪个是Func<int>

事实上也Func< int,int,int,int,...>可以处理delegate { return x; }......

问题1 对此行为有任何解释吗?

问题2

我有这个代码:

class MyClass
{
    public delegate void MyEventHandler(object sender);
    public  event MyEventHandler MyEvent;
}
Run Code Online (Sandbox Code Playgroud)

我想使用通用处理程序,所以:

class MyClass
{
    public  Action<object> MyEventHandler;
    public …
Run Code Online (Sandbox Code Playgroud)

.net c# generics .net-4.0

2
推荐指数
1
解决办法
306
查看次数

是否可以在单个List <T> ForEach中使用Thread.Sleep()?

是否可以在单个语句中重写以下代码?

foreach(var myVar in varEnumerable)
{
    MyMethod(myVar);
    Thread.Sleep(2000);
}
Run Code Online (Sandbox Code Playgroud)

如果没有Thread.Sleep(),我会把它写成:

varEnumerable.ToList().ForEach(x => MyMethod(x));
Run Code Online (Sandbox Code Playgroud)

c# linq

2
推荐指数
1
解决办法
343
查看次数