gpt4 book ai didi

c# - 在 C# 中为变量分配动态函数调用的结果

转载 作者:数据小太阳 更新时间:2023-10-29 06:13:17 25 4
gpt4 key购买 nike

在 JavaScript 中,我可以通过动态创建函数来为变量赋值。比如

var name = (function () { name="bob"; return name; }());

我相当确定使用 C# 4.0 可以实现相同类型的事情。有人可以告诉我上面同一行在 C# 中的语法吗?

此外,如果您能让我记住创建此类动态函数的正确术语是什么,我们将不胜感激!

感谢您的帮助!

PS:这个问题之前可能有人问过,但由于我不清楚术语,所以我可能没有找到它。如果是这样,我深表歉意!

最佳答案

您可以使用匿名方法:

Func<string> anonymousFunction = () => { string name = "bob"; return name; };
string myName = anonymousFunction();

第一行的语法是lambda,这是C#3.0及以上版本声明匿名方法的方式。上面的函数没有参数,但也没有什么能阻止你包含它们:

Func<string, string> makeUppercase = x => x.ToUpper();
string upperCase = makeUppercase("lowercase");

请注意,由于只有一个参数,您可以省略它周围的括号。同样,由于整个方法是单个 return 语句,您可以省略大括号和 return 语句本身。

这种类型的 lambda 在使用 LINQ 扩展方法时非常常见,因为其中许多方法需要一个返回值的单参数方法:

var numbers = new List<int>() { 1, 2, 3, 4 };
var divisibleByTwo = numbers.Where(num => num % 2 == 0);

要回答您的实际问题,该语法在 C# 中无效。如果您尝试这样做:

string output = (x => x.ToUpper())("lowercase");

您会收到一条错误消息,提示“需要方法名称”。您必须先将匿名方法分配给委托(delegate)。

关于c# - 在 C# 中为变量分配动态函数调用的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7082340/

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