C# 如何在csharp中从lambda创建动作

C# 如何在csharp中从lambda创建动作,c#,C#,我想以工厂在构建时知道的某种方式处置对象。因此,在我的对象的构造函数中,我传递了一个无参数函数,该函数将在处理时执行 如何从csharp中的lambda构造动作 在伪代码中,即: var dispose = new Action( () => { some side effect }); 如果不想使用动作构造函数,可以始终显式指定变量类型,这在涉及动作、函数和表达式时通常是必需的 像这样: Action dispose = () => { /* do something */ }

我想以工厂在构建时知道的某种方式处置对象。因此,在我的对象的构造函数中,我传递了一个无参数函数,该函数将在处理时执行

如何从csharp中的lambda构造动作

在伪代码中,即:

var dispose = new Action( ()  => { some side effect });

如果不想使用动作构造函数,可以始终显式指定变量类型,这在涉及动作、函数和表达式时通常是必需的

像这样:

Action dispose = () => { /* do something */ };
Action<int> dispose = someInt => { /* do something with the 'someInt' parameter */ };
Action<int, string> dispose = (someInt, someString) => { /* do something with the two parameters */ };

如果不想使用动作构造函数,可以始终显式指定变量类型,这在涉及动作、函数和表达式时通常是必需的

像这样:

Action dispose = () => { /* do something */ };
Action<int> dispose = someInt => { /* do something with the 'someInt' parameter */ };
Action<int, string> dispose = (someInt, someString) => { /* do something with the two parameters */ };

为什么它是一个伪代码?我不知道csharp有时有一个单元。字体和语法的不规则性让人很困惑,我想这会让你的问题成为一个答案。你在网上看过了吗@TejasVaishnav daslinkenlight是对的:它确实有效。我只是对Action,Func,(),{}是如何一起工作的感到困惑,但我最终编写的伪代码实际上是通过csharp的规则来实现的,因为它是有效的。为什么它是伪代码?我不知道csharp有时有单位。字体和语法的不规则性让人很困惑,我想这会让你的问题成为一个答案。你在网上看过了吗@TejasVaishnav daslinkenlight是对的:它确实有效。我只是对Action,Func,(),{}是如何一起工作的感到困惑,但我最终编写的伪代码实际上是通过csharp的规则作为有效的
/* will not compile */
var dispose = (someInt, someString) => /* do something with the two parameters */ ;