您的位置:首页 > 房产 > 家装 > C# 泛型

C# 泛型

2024/10/5 20:22:19 来源:https://blog.csdn.net/m0_53393728/article/details/141427401  浏览:    关键词:C# 泛型

概念

泛型实现了类型参数化,达到代码重用目的
通过类型参数化来实现同一份代码上操作多种类型

泛型相当于类型占位符
定义类或方法时使用替代符代表变量类型


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

泛型分类

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


  interface 接口名<泛型占位字母>

泛型函数
    基本语法:函数名<泛型占位字母>(参数列表)

    注意:泛型占位字母可以有多个,用逗号分开

泛型类和接口

class TestClass<T>
{
    public T value;
}    

class TestClass2<T1,T2,K,M,LL,Key,Value>
{
    public T1 value1;
    public T2 value2;
    public K value3;
    public M value4;
    public LL value5;
    public Key value6;
    public Value value7;
}

interface TestInterface<T>
{
    T Value
    {
        get;
        set;
    }
}

class Test : TestInterface<int>   这里要指定接口泛型T的类型
{
    public int Value { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
}

泛型方法

1.普通类中的泛型方法

    class Test2
    {
        public void TestFun<T>( T value)
        {
            Console.WriteLine(value);
        }

        public void TestFun<T>()
        {
            //用泛型类型 在里面做一些逻辑处理
            T t = default(T);     //default(类型);返回改类型默认值。
        }

        public T TestFun<T>(string v)
        {
            return default(T);
        }

        public void TestFun<T,K,M>(T t, K k, M m)
        {

        }
    }

    2.泛型类中的泛型方法
    class Test2<T>
    {
        public T value;

        public void TestFun<K>(K k)
        {
            Console.WriteLine(k);
        }

        //  ↓这个不叫泛型方法 因为 T是泛型类申明的时候 就指定 在使用这个函数的时候 
        //我们不能再去动态的变化了
        public void TestFun(T t)
        {

        }
    }

泛型的作用

1.不同类型对象的相同逻辑处理就可以选择泛型
2.使用泛型可以一定程度避免装箱拆箱
   举例:优化ArrayList

class ArrayList<T>
{
    private T[] array;

    public void Add(T value)
    {

    }

    public void Remove( T value)
    {

    }
}


using System.Collections;class Judge
{public static string  Type <T> (){string a;if (typeof(T) == typeof(int)){return a = "整形" + "," + sizeof(int) + "字节";}else if (typeof(T) == typeof(Char)){return a = "字符" + "," + sizeof(Char) + "字节";}else if (typeof(T) == typeof(float)){return a = "浮点数" + "," + sizeof(float) + "字节";}else if (typeof(T) == typeof(String)){return a = "字符串" + "," + "?"+ "字节";}else { return a = "其他类型"; }}}class Program
{public   static void Main(){Console.WriteLine ( Judge.Type<int>());Console.WriteLine(Judge.Type<float >());Console.WriteLine(Judge.Type<double >());Console.WriteLine(Judge.Type<string >());Console.WriteLine(Judge.Type<Char>());}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com