文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C#泛型委托是什么

2023-06-17 23:11

关注

本篇内容主要讲解“C#泛型委托是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#泛型委托是什么”吧!

C# 泛型委托学习之前首先来看看什么是C# 委托,C# 委托是一种引用方法的类型。一旦为委托分配了方法,C# 委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值,如下面的示例所示:与委托的签名(由返回类型和参数组成)匹配的任何方法都可以分配给该委托。这样就可以通过编程方式来更改方法调用,还可以向现有类中插入新代码。只要知道委托的签名,便可以分配自己的委托方法。

C# 泛型委托代码

public delegate int PerformCalculation(int x, int y);

将方法作为参数进行引用的能力使委托成为定义回调方法的理想选择。例如,可以向排序算法传递对比较两个对象的方法的引用。分离比较代码使得可以采用更通用的方式编写算法。

C# 委托具有以下特点:

◆C# 委托类似于 C++ 函数指针,但它是类型安全的。

◆C# 委托允许将方法作为参数进行传递。

◆C# 委托可用于定义回调方法。

◆C# 委托可以链接在一起;例如,可以对一个事件调用多个方法。

◆方法不需要与委托签名精确匹配。

◆C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。

C# 泛型委托的理解及应用:

C# 委托可以定义自己的类型参数。引用泛型委托的代码可以指定类型参数以创建已关闭的构造类型,就像实例化泛型类或调用泛型方法一样,如下例所示:

C# 泛型委托代码

public delegate void Del﹤T﹥(T item);  public static void Notify(int i) { }   Del﹤int﹥ m1 = new Del﹤int﹥(Notify);

C# 2.0 版具有称为方法组转换的新功能,此功能适用于具体委托类型和泛型委托类型,并使您可以使用如下简化的语法写入上一行:

C# 泛型委托代码

Del﹤int﹥ m2 = Notify;

在泛型类内部定义的委托使用泛型类类型参数的方式可以与类方法所使用的方式相同。

C# 泛型委托代码

class Stack﹤T﹥  {      T[] items;      int index;       public delegate void StackDelegate(T[] items);  }

引用委托的代码必须指定包含类的类型变量,如下所示:

C# 泛型委托代码

private static void DoWork(float[] items) { }   public static void TestStack()  {      Stack﹤float﹥ s = new Stack﹤float﹥();      Stack﹤float﹥.StackDelegate d = DoWork;  }

根据典型设计模式定义事件时,泛型委托尤其有用,因为发送方参数可以为强类型,不再需要强制转换成 Object,或反向强制转换。

C# 泛型委托代码

delegate void StackEventHandler﹤T, U﹥(T sender, U eventArgs);   class Stack﹤T﹥  {      public class StackEventArgs : System.EventArgs { }      public event StackEventHandler﹤Stack﹤T﹥,   StackEventArgs﹥ stackEvent;       protected virtual void OnStackChanged(StackEventArgs a)      {          stackEvent(this, a);      }  }   class SampleClass  {      public void HandleStackChange﹤T﹥(Stack﹤T﹥ stack,   Stack﹤T﹥.StackEventArgs args) { }  }   public static void Test()  {      Stack﹤double﹥ s = new Stack﹤double﹥();      SampleClass o = new SampleClass();      s.stackEvent += o.HandleStackChange;  }

到此,相信大家对“C#泛型委托是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯