c#自定义表达式变量(我没有更好的术语)

c#自定义表达式变量(我没有更好的术语),c#,C#,这在c#中叫什么?你是怎么做到的/语法? 这叫做“内联函数”吗 我有办法。 在这个方法中,我想重复使用相同的代码几次。也许可以在其他语言中作为变量 e、 g 与上面的伪代码不同,我的表达式相当长,我觉得我还不应该用它来创建函数。在这个方法中,表达式是应用程序中唯一的位置(因为我目前没有更好的术语),永远不会使用 请理解,我并不是简单地试图在生产表达式中向x添加2。我会使用x在每一行上这样做。在生产中,expl实际上是一个五行三值表达式(我相信我在本例中使用的术语表达式是正确的),因此我不知道该如

这在c#中叫什么?你是怎么做到的/语法? 这叫做“内联函数”吗

我有办法。 在这个方法中,我想重复使用相同的代码几次。也许可以在其他语言中作为变量

e、 g


与上面的伪代码不同,我的表达式相当长,我觉得我还不应该用它来创建函数。在这个方法中,表达式是应用程序中唯一的位置(因为我目前没有更好的术语),永远不会使用

请理解,我并不是简单地试图在生产表达式中向x添加2。我会使用
x
在每一行上这样做。在生产中,
expl
实际上是一个五行三值表达式(我相信我在本例中使用的术语表达式是正确的),因此我不知道该如何反复剪切并通过相同的五行:-)

谢谢

int x = 0;
Action addTwo = () => x += 2;
addTwo();
addTwo();
操作
是一种特定形式的
委托
,类似于内联函数。它使用在其自身范围之外声明的变量这一事实也使其成为闭包。用.NET framework定义的其他
委托
包括
操作
的各种通用形式(因此可以向其中传递参数)和
Func
(因此可以从中返回值)。但您也可以声明自己的命名委托,该委托具有您喜欢的任何方法签名

上述代码使用lambda表达式或lambda语法,但您也可以更明确地声明它:

Action addTwo = delegate() { x += 2 };
尚未发布的,本质上是相同的,但语法略有不同:

void AddTwo() => x += 2;

操作
是一种特定形式的
委托
,类似于内联函数。它使用在其自身范围之外声明的变量这一事实也使其成为闭包。用.NET framework定义的其他
委托
包括
操作
的各种通用形式(因此可以向其中传递参数)和
Func
(因此可以从中返回值)。但您也可以声明自己的命名委托,该委托具有您喜欢的任何方法签名

上述代码使用lambda表达式或lambda语法,但您也可以更明确地声明它:

Action addTwo = delegate() { x += 2 };
尚未发布的,本质上是相同的,但语法略有不同:

void AddTwo() => x += 2;


你要找的术语是

最简单的方法是使用或泛型委托类型。如果要返回值,请使用
Func
,要返回无效值,请使用
操作

在您的示例中,可以这样编写表达式行:

Func<int> expl = () => x += 2;
Func expl=()=>x+=2;

这将在
x
中添加2并返回结果。

您要查找的术语是

最简单的方法是使用或泛型委托类型。如果要返回值,请使用
Func
,要返回无效值,请使用
操作

在您的示例中,可以这样编写表达式行:

Func<int> expl = () => x += 2;
Func expl=()=>x+=2;

这将在
x
中添加2并返回结果。

“我觉得我不应该从中创建函数”-为什么?听说过循环吗?在这个方法中,表达式是应用程序中唯一的位置。MickyD我想有人在读第3、4、5行的其余部分发生了什么,7可能理解循环不是一个合理的optionFIVE lines表达式?用三元运算符?更频繁地提取一个函数(或两个、三个或五个或引入更多的局部变量)是为了清晰,而不仅仅是为了重用“我觉得我不应该用它来创建一个函数”-为什么?听说过循环吗?在这个方法中,表达式是应用程序中唯一的位置。MickyD我认为阅读第3、4、5和7行其余部分的内容的人可能会理解循环不是一个合理的optionFIVE lines表达式?用三元运算符?更频繁地提取一个函数(或两个、三个或五个或引入更多的局部变量)是为了清晰,而不仅仅是为了重用。您需要为变量命名。@JackA。我想感谢你和StriplingWarrior的回答。谢谢你需要给你的变量起个名字。@JackA。我想感谢你和StriplingWarrior的回答。谢谢,太好了。我的最后一个实现是使用Func作为返回类型。太好了。我的最后一个实现是使用Func作为返回类型。