原文地址: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{ }

【转】C#如何创建泛型类T的实例的更多相关文章

  1. C#如何创建泛型类T的实例

    最近在学历基类的写法时,遇到了一个问题:如何怎么创建一个泛型类T的实例呢?     废话不多说了,直接上代码吧,目前发现三种方法,先贴上,以后再总结,希望能帮助跟我遇到同样问题的朋友. 方法一,通过外 ...

  2. C#创建泛型类T的实例的三种方法

    原文链接:https://www.cnblogs.com/lxhbky/p/6020612.html 方法一,通过外部方法传入的实例来实例化: //泛型类: public class MySQLHel ...

  3. StructureMap.dll 中的 GetInstance 重载 + 如何利用 反射动态创建泛型类

    public static T GetInstance<T>(ExplicitArguments args); // // Summary: // Creates a new instan ...

  4. 初学C#和MVC的一些心得,弯路,总结,还有教训(4)--Cache 关于创建多个缓存实例

    asp.net中的数据缓存可以用 HttpRuntime.Cache ,这个是大家都知道的,但如果缓存的数据比较多,又比较杂乱,想要把缓存分开管理(也就是创建多个缓存实例)应该怎么做呢... 于是常规 ...

  5. PHPExcel创建文件格式写入对象实例

    首先到http://www.codeplex.com/PHPExcel下载PHPExcel 下面就是php导出excel的程序 <?phpini_set("display_errors ...

  6. 李洪强iOS开发之OC[008] -创建一个对象并访问实例变量

    // //  main.m //  07 - 创建一个对象并且访问实例变量 // //  Created by vic fan on 16/7/3. //  Copyright © 2016年 李洪强 ...

  7. Java Servlet(十一):一个servlet被10个浏览器客户端访问时会创建几个servlet实例?

    一般Servlet只初始化一次(只有一个实例).对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递给该方法.如此重复以 ...

  8. OCM_第十六天课程:Section7 —》GI 及 ASM 安装配置 _安装 GRID 软件/创建和管理 ASM 磁盘组/创建和管理 ASM 实例

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

  9. (转)使用 CJSON 在C语言中进行 JSON 的创建和解析的实例讲解

    使用 CJSON 在C语言中进行 JSON 的创建和解析的实例讲解   本文用代码简单介绍cjson的使用方法,1)创建json,从json中获取数据.2)创建json数组和解析json数组 1. 创 ...

随机推荐

  1. 7-性能测试i报告

    性能测试报告概述 1.测试报告是指把测试的过程和结果写成文档:对发现的问题和缺陷进行分析:为纠正软件的存在的质量问题提供依据: 为软件验收和交付打下基础 2.性能测试报告属于软件测试报告的一种,主要针 ...

  2. Java基本语法实验报告

      题目:       Java基本语法 课程名称:  JAVA语言程序设计 班    级:    信1705-1 姓    名:   刘雨馨     学号:   20173445 指导教师:    ...

  3. react父转子

    父组件使用子组件,子组件绑定父组件数据 ,子组件用props使用父组件数据 import React, { Component } from 'react'; import logo from './ ...

  4. openstack路由管理命令

    1.命令一览 [root@cc07 ~]# neutron help | grep route bgp-speaker-advertiseroute-list List routes advertis ...

  5. mysql的myBatis,主键自增设置

    方法一: insert id="insert" parameterType="Person" useGeneratedKeys="true" ...

  6. poj 1094 Sorting It All Out 拓补排序

    Description An ascending sorted sequence of distinct values is one in which some form of a less-than ...

  7. 20155205 2016-2017-2 《Java程序设计》第7周学习总结

    20155205 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 第十二章 只要静态方法的方法命名中参数于返回值定义相同,也可以使用静态方法来定义函数接口操作 ...

  8. VC6.0支持UNICODE的步骤

    针对MFC程序的开发,支持Unicode一共需要三步: Step1 设置->C/C++预处理定义中,删除_MBCS,添加_UNICODE,UNICODE. Step2 设置->Link-& ...

  9. winSockets编程(七)WSAAsyncSelect模式

    占位## #include <WinSock2.h> #include <Windows.h> #include <StrSafe.h> #pragma comme ...

  10. 1.8.1suspend与resume方法使用

    暂停线程意味着线程还能恢复运行 suspend()方法暂停线程.resume()恢复线程 测试如下 package com.cky.thread; /** * Created by edison on ...