C#中的泛型

187 阅读3分钟

「这是我参与2022首次更文挑战的第16天,活动详情查看:2022首次更文挑战」。

欢迎各位朋友微信搜索「Andy阿辉」关注一波!

写一些程序员的所思所想,希望对你有帮助。

前言

这篇文章带领大家一起学习学习泛型。

我们目前使用的语言结构,可以建立多种不同类型的强大对象。

很多时候是声明类,封装需要的行为之后创建类的实例对象。目前为止,所有类声明用到的类型都是特定类型。

有可能是我们自己定义的,有可能是BCL定义的。

其实有时候我们可以把类的行为提取或重构出来,使之不仅能应用到它们编码的数据类型上,而且还能应用到其他类型上。这时就有了泛型的概念,它就是用来解决这样的问题的。

泛型是专门为多段代码在不同的数据类型上执行相同指令的情况专门设计的。

用白话说就是,设计一个泛型类型代码,它能接受很多类型,可以根据业务逻辑变化而使用不同的类型对象来操作。

什么是泛型

泛型特性提供了一种更优雅的方式,可以让多个类型共享一组代码。

泛型可以声明类型参数化的代码,可以用不同的类型进行实例化。 其实就是可以用类型占位符来写代码,然后在创建类的实例时指明真实的类型。

类型不是对象,而是对象的模版。

泛型类型也不是对象,而是类型的模版。

C#提供5种泛型:类、结构、接口、委托和方法。其中前4个是类型,而方法是成员。

        class Ahui<T> 
        {
            T Name { get; set; }

            private T GetName(T value) 
            {
                return value;
            }
        }

上面代码中的T就是代表一种泛型的占位符,我们可以使用这种占位符来定义泛型对象,在被调用的时候传入对应的类型就OK。

泛型的使用

那么在定义泛型对象时具有如下步骤:

  • 在某些类型上使用占位符来声明一个类
  • 为占位符提供真实类型。(该类型称为构造类型)
  • 创建构造类型实例。

声明泛型类

  • 在类名之后放置一组尖括号。
  • 在尖括号中用逗号分隔的占位符字符串来表示希望提供的类型(类型参数)。
  • 在泛型类声明的主体中使用类型参数来表示应该替代的类型。
        class Ahui<T,T2> 
        {
            public T Age;
            public T2 Name;
        }

在泛型类型声明中并没有特殊的关键字,取而代之的是尖括号中的类型参数列表,它可以区分泛型类与普通类的声明。

寄语

人生短暂,我不想去追求自己看不见的,我只想抓住我能看得见的。

原创不易,给个关注。

我是阿辉,感谢您的阅读,如果对你有帮助,麻烦点赞、转发 谢谢。