gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 18:57:01 24 4
gpt4 key购买 nike

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

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

例如

// I have a bit of code to define an expression expl
line1: int x = 0;
line2: var expl = { x+=2 }
line3: ... use expl // x now =2
line4: ... use expl // x now =4
line5: ... use expl // x now =6
line6: ... ... do other things ...
line7: ... use expl
... and so it goes on

与上面的伪代码不同,我的表达式相当冗长,而且我还没有觉得我应该从中创建一个函数。在这个方法中,表达式(因为我目前没有更好的术语)将永远不会被使用。

请理解,我并不是简单地尝试在我的生产表达式中将 2 添加到 x。我会使用 x 在每一行上执行此操作。在生产中 expl 实际上是一个五行三元表达式(我相信我在这种情况下正确使用术语表达式)所以我不只是剪切和粘贴相同的五行结束:-)

谢谢。

最佳答案

int x = 0;
Action addTwo = () => x += 2;
addTwo();
addTwo();

Actiondelegate 的特定形式,这就像一个内联函数。它使用在其自身作用域之外声明的变量这一事实也使它成为一个闭包。其他 delegate使用 .NET 框架定义的 s 包括各种通用形式的 Action<> (这样你就可以将参数传递给它)和Func<> (这样你就可以从中返回一个值)。但您也可以声明您自己的命名委托(delegate),它具有您喜欢的任何方法签名。

上面的代码使用了一个lambda 表达式,或者说lambda 语法,但是你也可以更明确地声明它:

Action addTwo = delegate() { x += 2 };

尚未发布的 C# 7 is expected to have Local Functions ,本质上是一样的,只是语法略有不同:

void AddTwo() => x += 2;

void AddTwo() { x += 2; }

关于c# 自定义表达式变量(因为我没有更好的术语),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42610089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com