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();
            }
        }
  • 相关阅读:
    IIS7配置URL Rewrite链接重写
    wordpress导航菜单的链接支持弹出新页面
    c++绝对是拯救了世界,特别是程序员
    Linux 磁盘坏道检测和修复
    centos里mysql无法用localhost连接的解决方法
    php扩展开发
    IP多播
    因特网的路由选择协议
    ICMP协议
    ARP协议
  • 原文地址:https://www.cnblogs.com/binyao/p/3043682.html
Copyright © 2011-2022 走看看