泛型

泛型的概念

泛型实现了类型参数化,达到代码复用目的

通过类型参数化来实现同一份代码上操作多种类型

泛型相当于类型占位符

定义类或方法时使用替代符代表变量类型

当真正使用类或方法时再具体指定类型


//泛型类和泛型接口
//基本语法:
//class 类名<泛型占位字母>
//interface 接口名<泛型占位字母>

//泛型函数
//基本语法:
//函数名<泛型占位字母>(参数列表)
//泛型展位字母可以有多个,用逗号分隔开

class TestClass<T>
{
    public T value;
}
class TestClass2<T1,T2,K,M,Key>
{
    public T1 value1;
    public T2 value2;
    public K value3;
    public M value4;
    public Key value5;
}
interface TestInterface<T>
{
    T Value
    {
        get;
        set;
    }
}
class Test : TestInterface<int>
{
    public int Value
    {
        get;
        set;
    }
}
TestClass<int> t = new TestClass<int>();
t.value = 10;
Console.WriteLine(t.value);
TestClass<string> t2 = new TestClass<string>();
t2.value = "123";
Console.WriteLine(t2.value);
TestClass2<int,string,float,double,uint> t3 = new TestClass2<int,string,float,double,uint>();

//普通类中的泛型方法
class Test2
{
    //作为参数
    public void TestFunc<T>(T value)
    {
        Console.WriteLine(value);
    }
    //参加逻辑处理
    public void TestFunc<T>()
    {
        T t = default(T);
    }
    //作为返回值
    public T TestFunc<T>(string v)
    {
        return default(T);
    }
    //多个泛型占位
    public void TestFunc<T,K,M>(T t,K k,M m)
    {
        
    }
}
Test2 tt = new Test2();
tt.TestFunc<string>("robot");

//泛型类中的泛型方法
//加了泛型之后类名就不同了所以Test2和Test<T>不同
class Test2<T>
{
    public T value;
    //这种不是泛型方法
    public void TestFunc(T t)
    {

    }
    //这才是泛型方法,而且这里的占位符跟类名里的不能相同
    public void TestFunc<K>(K k)
    {

    }
}

泛型的作用

不同类型的对象的相同逻辑处理可以选择泛型

使用泛型可以一定程度避免装箱拆箱

//优化ArrayList
//避免装箱拆箱
//不过只能装指定一种类型内容
class ArrayList<T>
{
    private T[] array;
    public void Add(T value)
    {

    }
    public void Remove(T value)
    {
        
    }
}
复习
//静态成员方法才能在不实例化对象的情况下直接使用
posted @   cannedmint  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示