千家信息网

C#委托的基础概念和特点

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解"C#委托的基础概念和特点",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C#委托的基础概念和特点"吧!委托具有以下特点:委托类似于 C++
千家信息网最后更新 2026年10月31日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安全错误 数据库的锁怎样保障安全 山东特亿宝互联网科技有限公司 互联网科技工作委员会 互联网科技公司华为 关于新基建和互联网科技 互联网未来科技 奇酷互联网络科技 山东吉时兔互联网科技有限公司 荆州市昕露互联网络科技有限公司 崇明区互联网教育科技诚信经营 四川慕妮娅互联网科技有限公司 工业互联网等科技实现智能化赋能 互联网科技圈年度人物 国大互联网教育科技有限公司薪资 雨阳互联网卡科技有限公司 互联网科技新闻 求路客互联网科技电话 广西泛欧互联网科技有限公司 上海互联网科技园景观 优雇互联网科技有限公司 互联网科技自媒体灵感 互联网中国科技 互联网科技金融 鑫亿盛互联网科技 深圳齐家互联网科技 睿民互联网科技 顺玮阁互联网科技 成都玖崟互联网科技有限公司乐商圈怎么样 湖南诚度互联网科技有限公司 美国五大互联网科技公司市值多少 恒生互联网科技趋势
0