C#方法可以返回一个方法吗?
C#中的方法可以返回一个方法吗?
例如,一个方法可以返回一个lambda表达式 ,但是我不知道我可以为这样的方法提供什么类型的参数,因为一个方法不是Type
。 这样的返回方法可以分配给某个委托。
以此概念为例:
public QuadraticFunctionMaker(float a , float b , float c) { return (x) => { return a * x * x + b * x + c; }; } delegate float Function(float x); Function QuadraticFunction = QuadraticFunctionMaker(1f,4f,3f);
您正在寻找的类型是Action<>
或Func<>
。
两种类型的通用参数确定方法的类型签名。 如果您的方法没有返回值,请使用Action
。 如果它有返回值,请使用Func
,其中最后一个generics参数是返回类型。
例如:
public void DoSomething() // Action public void DoSomething(int number) // Action public void DoSomething(int number, string text) // Action public int DoSomething() // Func public int DoSomething(float number) // Func public int DoSomething(float number, string text) // Func
public Func QuadraticFunctionMake(float a, float b, float c) { return x => a * x * x + b * x + c; }
返回类型是Func
。
= Function
。 那是,
public Function QuadraticFunctionMaker(float a , float b , float c) { return (x) => { return a * x * x + b * x + c; }; }
你正在寻找什么,因为你已经宣布委托Function
匹配。 或者,您根本不需要声明委托,并且可以使用其他人注意到的Func
。 这完全相同。 事实上, Func
的声明方式与委托Function
完全相同,只是它是通用的。
你的lambda表达式将float
作为参数(我相信),然后返回一个float
。 在.NET中 ,我们可以通过类型Func
来表示它。
通常,如果您正在处理需要更多参数的lambda,则可以使用Func
,最多包含八个参数。
我认为你需要Action
您可以使用dynamic
关键字。 请参阅dynamic(C#参考) 。
我认为,元组适合你的情况。 有关更多信息,请查看https://sankarsan.wordpress.com/2009/11/29/tuple-in-c-4-0/ 。
上述就是C#学习教程:C#方法可以返回一个方法吗?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/991673.html