将c#中动态函数调用的结果赋值给变量
Assign a variable the result of dynamic function call in C#
在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
语句本身。
这种类型的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");
你会得到一个错误消息,说"方法名称预期。"你必须首先将匿名方法分配给一个委托。
一般情况下你需要查看的是Func/Actions:
http://msdn.microsoft.com/en-us/library/bb549151.aspx http://msdn.microsoft.com/en-us/library/018hxwa8.aspx对于这个问题,lambda表达式:
http://msdn.microsoft.com/en-us/library/bb397687.aspx相关文章:
- Javascript变量赋值|
- 无法为打字稿字典赋值
- Javascript-根据赋值顺序,按键合并对象数组
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 如何通过json对象数组为嵌套对象赋值
- 赋值后的回调函数
- ||(OR)运算符如何在赋值中工作
- 可以使用属性赋值实现多个函数
- JS正则表达式结果表达式赋值问题
- 在AngularJS中,我不能将api请求的结果赋值给视图
- 赋值运算符,为什么结果是-3
- 将array.filter()的结果赋值给同一个数组是否安全?
- 关于JavaScript和PHP赋值操作符:为什么结果不同
- 无法在javascript中追加到表.错误:无法赋值给函数结果
- 将c#中动态函数调用的结果赋值给变量
- jQuery不能给函数的结果赋值
- 变量赋值时链式推入方法导致的意外结果
- 如何为jquery/ajax帖子的结果赋值
- 如何将函数的结果赋值到全局变量中?
- mongodb在赋值变量时打印结果