C#的泛型(包括泛型委托)

这篇博客深入探讨C#的泛型概念,旨在避免类型和成员膨胀,强调泛型的正交性。文中通过实例讲解了泛型接口如动态数组(List)的应用,并介绍了带有多重泛型参数的接口和类。同时,讨论了泛型委托,特别是Action和Func委托,以及它们与Lambda表达式的结合在LINQ查询中的应用。
摘要由CSDN通过智能技术生成

这篇,也是刘铁猛老师的最后完结课程了

泛型(generic) 它无处不在

  • 为什么需要泛型:避免成员膨胀或者类型膨胀
  • 正交性:泛型类型(类/接口/委托/…)、泛型成员(属性/方法/字段/…)
  • 类型方法的参数推断
  • 泛型与委托,lambda表达式

泛型的全称应该是,泛化的数据类型。是泛泛而谈的,比如我喜欢听音乐,那么音乐就是一个泛型的。而如果我要去听音乐,我就得选择一个具体的音乐,比如流行乐和古典乐



为了避免类型膨胀和成员膨胀

class Program
    {
   
        static void Main(string[] args)
        {
   
            Apple apple = new Apple() {
    Color = "Green" };
            Book book = new Book() {
    Name = "Father" };
            Box<Apple> box1 = new Box<Apple>() {
    Cargo = apple };
  //这里在尖括号里写了类名Apple,就是用Apple这个类型替换了下面的TCargo类型
 //所有泛型编程实体都不能直接编程,想要实现泛型实体之前,都需要先对其进行刻画
            Box<Book> box2 = new Box<Book>() {
    Cargo = book };
            Console.WriteLine(box1.Cargo.Color);
        }
    }
    class Book
    {
   
        public string Name {
    get; set; }
    }
    class Apple
    {
   
        public string Color {
    get; set; }
    }
    class Box<TCargo>
    //在类后加上了尖括号,就是泛型类了。在尖括号里写的就是类型参数。这个参数就是泛化类,也就是刚刚例子中我喜欢听音乐的音乐
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值