代码之家  ›  专栏  ›  技术社区  ›  Orca

C#中()=>运算符的意义(如果存在)

  •  38
  • Orca  · 技术社区  · 14 年前

    我读了这句有趣的话 here

    有趣的是,他主张使用代理:

    Log.Info("I did something: {0}", () => action.GenerateDescription());
    

    问题是,这是什么()=>运算符,我想知道?我试着用Google搜索它,但由于它是由符号组成的,Google真的帮不了什么忙。我是不是尴尬地错过了什么?

    5 回复  |  直到 8 年前
        1
  •  60
  •   Simon Steele    14 年前

    这引入了一个没有参数的lambda函数(匿名委托),它相当于并且基本上是:

    delegate void () { return action.GenerateDescription(); }
    

    还可以添加参数,以便:

    (a, b) => a + b
    

    这大致相当于:

    delegate int (int a, int b) { return a + b; }
    
        2
  •  9
  •   Lews Therin    6 年前

    => 我是lambda接线员。当我们没有任何输入参数时,我们只使用圆括号 () 在lambda运算符之前。

    语法: (input parameters) => expression

        3
  •  3
  •   Community CDub    8 年前
        4
  •  2
  •   abatishchev Karl Johan    14 年前

    也许,在你的情况下,这将是一个 Func<string>

        5
  •  2
  •   PiRX    14 年前

    这是一种将不带参数的匿名委托作为lambda表达式传递的方法。

    与.NET2.0中的类似

    Log.Info("I did something: {0}", delegate()
                {
                    return action.GenerateDescription();
                });