C#委托的用法【详细】 超、凢脫俗 2024-04-01 19:46 56阅读 0赞 ### C\#委托的用法 ### `委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。事件是一种特殊的委托。` **1.委托的声明** **Delegate 类** Delegate是一种引用类型,我们在处理他的时候要当作类来看待而不是方法,说白了委托就是对方法或者方法列表的引用,调用一个委托实例就好像是调用c++中的指针一 样,他封装了对制定方法的引用,或者说委托起到的是桥梁的作用,实例后的委托对象会将给定的参数传递给他所回调的方法,并去执行方法。 Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型。 例:public delegate int MethodtDelegate(int x, int y);表示有两个参数,并返回int型。 public delegate void myDelegate(string str); public static void HellowChinese(string strChinese) { Console.WriteLine("Good morning," + strChinese); Console.ReadLine(); } myDelegate d = new myDelegate(HellowChinese); d("Mr wang"); 匿名方法 `C#中几个常用的委托(Action,Func,predicate)` **Action** Action是无返回值的泛型委托。 Action 表示无参,无返回值的委托 Action<int,string> 表示有传入参数int,string无返回值的委托 Action<int,string,bool> 表示有传入参数int,string,bool无返回值的委托 Action<int,int,int,int> 表示有传入4个int型参数,无返回值的委托 `Action至少0个参数,至多16个参数,无返回值。` public delegate void Action<in T1, in T2, in T3, in T4>( T1 arg1, T2 arg2, T3 arg3, T4 arg4 ) Action是对委托的使用的简化: public static void HellowChinese(string strChinese) { Console.WriteLine("Good morning," + strChinese); Console.ReadLine(); } Action<string> action = HellowChinese; action("Spring."); **Func** `Func是有返回值的泛型委托` Func 表示无参,返回值为int的委托 Func<object,string,int> 表示传入参数为object, string 返回值为int的委托 Func<object,string,int> 表示传入参数为object, string 返回值为int的委托 Func<T1,T2,T3,int> 表示传入参数为T1,T2,T3(泛型)返回值为int的委托 ` Func至少0个参数,至多16个参数,根据返回值泛型返回。必须有返回值,不可void` public delegate TResult Func<in T1, in T2, in T3, out TResult>( T1 arg1, T2 arg2, T3 arg3 ) **Func也是对委托的使用的简化:** public static string HelloEnglish(string strEnglish) { return "Hello." + strEnglish; } Func<string, string> f = HelloEnglish; Console.WriteLine(f("Srping ji")); Console.ReadLine(); **predicate** `predicate 是返回bool型的泛型委托` predicate 表示传入参数为int 返回bool的委托 `Predicate有且只有一个参数,返回值固定为bool` public delegate bool Predicate( T obj ) **2.总结** 委托类似于 C++ 函数指针,但它们是类型安全的。 委托允许将方法作为参数进行传递。 委托可用于定义回调方法。 委托可以链接在一起;例如,可以对一个事件调用多个方法。 方法不必与委托签名完全匹配。 Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型 Func可以接受0个至16个传入参数,必须具有返回值 Action可以接受0个至16个传入参数,无返回值 Predicate只能接受一个传入参数,返回值为bool类型 使用Func<T,TResult>和Action,Action而不使用Delegate其实都是为了简化代码,使用更少的代码达到相同的效果,不需要我们显示的声明一个委托。 Func<T,TResult>的最后一个参数始终是返回类型,而Action是没有返回类型的,而Action是没有返回类型和参数输入的。 predicate 使用的比较少。
相关 C#委托的用法【详细】 C\委托的用法 `委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。事件是一种特殊的委托。` 1.委托的声明 Delegate 类 D 超、凢脫俗/ 2024年04月01日 19:46/ 0 赞/ 57 阅读
相关 C#委托 一、什么是委托 委托是一种类型,就跟int,double,struct,string,class一样。它定义了一个函数的类型。现在,我们有一个方法,我们希望它的参数是某个 川长思鸟来/ 2024年02月17日 22:49/ 0 赞/ 47 阅读
相关 C#的委托 C\的委托是一种类型,它可以在不同的类之间传递方法。以下是一个精炼的代码注释示例来说明C\的委托: // 声明一个委托类型 delegate void MyD 太过爱你忘了你带给我的痛/ 2023年10月12日 17:28/ 0 赞/ 47 阅读
相关 C#——委托 C\——委托 委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用。 在实例化委托时,你可以将其实例与任何具有兼容签名和返回类型的方法相关联。 你可以通过委托 冷不防/ 2023年01月03日 04:22/ 0 赞/ 220 阅读
相关 C#委托 委托: 委托定义了方法的类型,使得方法可以作为另一个方法的参数来进行传递,这样可以在程序中避免使用大量的判断语句,同时使程序具有更好的扩展性。 可以将多个方法绑定到同一个委 矫情吗;*/ 2022年09月17日 07:28/ 0 赞/ 179 阅读
相关 c#委托 首先创建个控制台应用程序在Program下创建一个无参数无返回值的静态方法,可以输出一句话 static void Text() { Cons 迈不过友情╰/ 2022年04月16日 06:15/ 0 赞/ 242 阅读
相关 C# 委托 一、什么是委托? 初次理解这么抽象的概念确实有点挺难的,如果学过C语言,可能知道C语言里可以把一个方法当做参数来传递,委托大概类似也是这样一个原理。 想象一下,在一个 ゞ 浴缸里的玫瑰/ 2022年04月08日 12:15/ 0 赞/ 259 阅读
相关 C# 委托 什么是委托? 委托和事件这两个概念是完全配合的。委托仅仅是函数指针,那就是说,它能够引用函数,通过传递地址的机制完成。委托是一个类,当你对它实例化时,要提供一个引 野性酷女/ 2022年02月16日 13:51/ 0 赞/ 263 阅读
相关 C# 委托 委托 作用:将多个参数相同的方法,进行委托统一调用,将参数和调用方法传递给委托,由委托调用。 好处:可以将多个方法内相同的部分提取出来,根据参数和方法参数,调用需要的 ゝ一世哀愁。/ 2021年10月14日 02:00/ 0 赞/ 363 阅读
相关 C# 委托 什么是委托? 委托是寻址方法的.NET版本,使用委托可以将方法作为参数进行传递。委托是一种特殊类型的对象,其特殊之处在于委托中包含的是一个或多个方法的地址,而不是数据。委 谁践踏了优雅/ 2021年06月24日 16:10/ 0 赞/ 479 阅读
还没有评论,来说两句吧...