C#委托的基础概念和特点
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本篇内容主要讲解"C#委托的基础概念和特点",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C#委托的基础概念和特点"吧!委托具有以下特点:委托类似于 C++
千家信息网最后更新 2025年02月01日C#委托的基础概念和特点
本篇内容主要讲解"C#委托的基础概念和特点",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C#委托的基础概念和特点"吧!
委托具有以下特点:
委托类似于 C++ 函数指针,但它是类型安全的。
委托允许将方法作为参数进行传递。
委托可用于定义回调方法。
委托可以链接在一起;例如,可以对一个事件调用多个方法。
方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。
C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。
在C#中使用委托分为三步:
1.定义委托:
//声明委托 public delegate void MyDel();
2.实例化委托:
TestDel t = new TestDel(); Console.WriteLine("-----以下是简单使用委托演示--------"); //t.MyMethod(); ///实例化委托,用一个方法来进行实例化 ///该方法签名要与委托签名一致 MyDel del = new MyDel(t.MyMethod);
3.调用委托:
///调用委托 del();
好了,其实委托的变化很复杂,但基本都会符合这么三个步骤,说过了,这些,再来看一下完整的代码:
namespace DelegateDemo{ //声明委托 public delegate void MyDel(); //声明带参的委托 public delegate void MyDel2(int num1, int num2); //声明带有返值的委托 public delegate string MyDel3(string s); //声明委托用于演示匿名方法 public delegate string ProcessString(string s); class Program { static void Main(string[] args) { #region 委托演示 /* TestDel t = new TestDel(); #region 简单实例化委托与调用委托 Console.WriteLine("-----以下是简单使用委托演示--------"); //t.MyMethod(); ///实例化委托,用一个方法来进行实例化 ///该方法签名要与委托签名一致 MyDel del = new MyDel(t.MyMethod); ///调用委托 del(); //C#2.0后可以这种方式实例化委托 MyDel del4 = t.MyMethod; del4(); //用静态方法进行实例化 del4 = TestDel.MyStaticMethod; del4(); //以下代码效果相同 //MyDel2 del2 = new MyDel2(t.MyMethod); //del2(10, 20); MyDel2 del2 = t.MyMethod; del2(10, 20); //MyDel3 del3 = new MyDel3(t.MyMethod); //Console.WriteLine(del3("abc")); #endregion #region 匿名方法实例化委托 Console.WriteLine("-----以下是匿名方法演示--------"); //用匿名方法实例化委托 ProcessString p = delegate(string inputString) { return inputString.ToUpper(); }; //通过委托调用匿名方法 Console.WriteLine(p("aaaa")); #endregion #region 委托多播演示 Console.WriteLine("-----以下是委托多播演示--------"); MyDel mydel1 = t.MyMethod; MyDel mydel2 = t.MyMethod2; MyDel mydel3 = TestDel.MyMethod3; MyDel allMyDel = mydel1 + mydel2 + mydel3; allMyDel(); allMyDel -= mydel3; allMyDel(); #endregion #region 委托作为参数演示 Console.WriteLine("-------以下是委托作为参数演示------"); MyDel3 paramMyDel3 = t.MyMethod; TestDel.MyParamMethod("aaa", paramMyDel3); #endregion #region 委托作为返回值 Console.WriteLine("---以下是委托作为返回值演示------"); ///returnMyDel指向t.MyReturnMethod()的返回值 MyDel3 returnMyDel = t.MyReturnMethod(); ///returnMyDel指向t.MyMethod //MyDel3 returnMyDel = t.MyMethod; Console.WriteLine(returnMyDel("sssssssssssss")); #endregion */ #endregion //MyReturnDelegateTest my = new MyReturnDelegateTest(); //my.MyTest(); MyParamDelegateTest myParam = new MyParamDelegateTest(); myParam.AddBooks(); myParam.MyTest(); } } public class TestDel { #region 普通方法 public static void MyStaticMethod() { Console.WriteLine("My Static Method"); } public void MyMethod() { Console.WriteLine("MyMethod"); } public void MyMethod2() { Console.WriteLine("My Method 22222222222"); } public static void MyMethod3() { Console.WriteLine("My Method 3333333333333"); } public void MyMethod(int num1, int num2) { Console.WriteLine(num1+num2); } public string MyMethod(string s) { return s.ToUpper(); } #endregion ////// 委托作为方法参数 /// /// /// public static void MyParamMethod(string s, MyDel3 del3) { Console.WriteLine(del3(s)); } ////// 委托作为返回值 /// /// ///public MyDel3 MyReturnMethod() { ///返回符合委托规范的方法 return MyMethod; } }
通过例子,我们可以知道,使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用"调用"这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方法。
到此,相信大家对"C#委托的基础概念和特点"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
委托
方法
实例
演示
C#
参数
概念
特点
基础
代码
变量
一致
内容
多个
指向
更多
学习
复杂
实用
普通
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
志留纪网络技术有限公司
北盛科技互联网
服务器被攻击了怎么恢复正常
软件开发与设计专业如何
网络安全评估方法分析
2021年网络安全试点赛
市网络安全应急管理中心怎么样
四川师范大学网络技术基础期末
软件开发高新账务
数据库怎么主从复制
使用网络安全软件的感想
禾迅网络技术有限公司郑州
对局服务器延迟原因
上饶企业服务器价格多少
我的世界服务器电脑版怎么下
达梦数据库查询字符编码
win7数据库组件
汽车网络安全人才少
如何学好网络安全法
青岛蓝恩网络技术
安卓手机版数据库
e-tek串口服务器
青岛华晨软件开发公司
鹰潭正规服务器
三级数据库考试前一天
公安数据库和检察院数据库
网络安全专家申报表中从事工作情况怎么写
用友t6怎么取消数据库
天津电力应急软件开发参考价格
新乡软件开发制作