zoukankan      html  css  js  c++  java
  • 泛型的主约束和次约束2

    假如一个泛型没有任何约束,那么它的应用是非常有限的,它不能对实参作任何类型上的保证,这时候就需要使用到泛型的约束:主约束 和 次约束

    泛型的主约束和次约束均要求泛型的实参必须满足一定的规范。C#编译器在编译的过程中可以根据约束条件,对所有泛型的类型实参进行检查,以确保满足条件。

    一个泛型参数可以至多拥有一个主约束,主约束可以是一个引用类型,类和结构。如果指定一个引用类型,则实参必须是该类型或者该类型的派生类型。

    类规定了实参必须是一个引用类型

    结构规定了实参必须是一个值类型

    一个泛型可以有多个次约束,但同时拥有主约束和次约束的泛型参数,实参必须同时满足主约束和次约束。

    View Code
    //主要约束限定T继承自Exception类型
        public class ClassList<T> where T : Exception
        {
            private T tException;
            public ClassList(T t)
            {
                this.tException = t;
            }
    
            public override string ToString()
            {
                //主要约束保证了tException拥有source成员
                return tException.Source;
            }
        }
    
        //主要约束限定了T是引用类型
        public class ClassList2<T> where T : class
        {
            private T customT;
            public void Clear()
            {
                customT = null;
            }
        }
    
        //主要约束限定了T是值类型
        public class ClassTValue<T> where T : struct
        {
            private T customerT;
            public override string ToString()
            {
                //T是值类型,不会发生NullReferenceException异常
                return customerT.ToString();
            }
        }
  • 相关阅读:
    第10章 指针(二) 首地址指针
    第10章 指针(五) 使用地址指针的引用
    第10章 指针(六) 指针小结
    C语言中的类模拟(C++编程思想)
    经典SQL语句大全
    C#ADO.NET操作数据代码汇总
    C#日期格式化
    第10章 指针(四) 地址簿指针变量
    数据库设计中的14个技巧
    第9章 预处理命令
  • 原文地址:https://www.cnblogs.com/binyao/p/3043682.html
Copyright © 2011-2022 走看看