Csharp/C#教程:C#方法可以返回一个方法吗?分享


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 委托定义。 我希望文章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

(0)
上一篇 2021年12月24日
下一篇 2021年12月24日

精彩推荐