zoukankan      html  css  js  c++  java
  • 【转】C#如何创建泛型类T的实例

    原文地址:https://www.cnblogs.com/lxhbky/p/6020612.html

    最近在学历基类的写法时,遇到了一个问题:如何怎么创建一个泛型类T的实例呢?    

    废话不多说了,直接上代码吧,目前发现三种方法,先贴上,以后再总结,希望能帮助跟我遇到同样问题的朋友。

    方法一,通过外部方法传入的实例来实例化:

    //泛型类:
    public class MySQLHelp<T>
    {
           private T t;
           public MySQLHelp(T t)
            {
                this.t = t;
            }    
    }
    
    //测试类
    public class Test{
         public static void Main(){
                   MySQLHelp<Message> mm = new MySQLHelp<Message>(new Message());
         }
    }
    //其他类
    public class Message{
    
    }

    方法二,通过限制泛型类的构造函数:

        限制泛型类必须带有无参构造方法:public class MySQLHelp<T> where T:new()

    //泛型类:
    public class MySQLHelp<T> where T:new()
    {
           private T t=new T();
           public MySQLHelp()
            {
            }    
    }
    
    //测试类
    public class Test{
         public static void Main(){
                   MySQLHelp<Message> mm = new MySQLHelp<Message>();
         }
    }
    //其他类
    public class Message{
    
    }

    方法三,利用微软提供的方法:

       利用微软的类:System.Activator(包含创建本地或远程对象类型的方法或获取引用的方法,翻译名:活化剂类)

    创建指定泛型类型参数指定的类型的实例:System.Activator.CreateInstance<T>()

    //泛型类:
    public class MySQLHelp<T>
    {
           //创建指定泛型类型参数指定的类型的实例(使用这种方法可以不对泛型类型T做限制,即不用添加:where T:new())
            private T t = System.Activator.CreateInstance<T>();
           public MySQLHelp()
            {
            }    
    }
    
    //测试类
    public class Test{
         public static void Main(){
                   MySQLHelp<Message> mm = new MySQLHelp<Message>();
         }
    }
    //其他类
    public class Message{
    
    }
  • 相关阅读:
    李洪强iOS开发之上传照片时英文改中文
    李洪强iOS开发之让您的Xcode键字如飞
    李洪强iOS开发之initWithFrame,initWithCoder和aweakFormNib
    跟我学设计模式视频教程——管擦者模式(下),责任链模式(上)
    leetcode
    POJ 3071 Football(概率DP)
    小贝_mysql数据库备份与恢复
    第2次实验——算法基本功 与 综合思考
    加密壳之ACProtect之OEP的处理
    C语言的各种位运算符的操作简述
  • 原文地址:https://www.cnblogs.com/eedc/p/9261455.html
Copyright © 2011-2022 走看看