创建类型的一个实例,该类型由指定的泛型类型参数指定。也就是创建一个泛型参数所属类型的对象。
C#
public static T CreateInstance<T>()
类型参数
T
要创建的类型。
返回值
类型:T
对新创建对象的引用。
通常情况下,在应用程序代码中无需使用 CreateInstance,因为在编译时类型必须是已知的。如果编译时类型已知,则可以使用正常的实例化语法(在 C# 中为 new 运算符)。
不存在带参数列表的 CreateInstance 泛型方法的重载,因为 CreateInstance 的非泛型重载已经提供了后期绑定构造函数决策。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//方法一、获得学生对象 new Student()
new Student().Say("张三");
//方法二、获得学生对象 Student.GetInstance
Student.GetInstance.Say("李四");
}
}
class Student
{
public string stuName = string.Empty;
public static Student GetInstance
{
get
{
return SingleItem<Student>.GetInstance();
}
}
public void Say(String strName)
{
Console.WriteLine("我的名字是:" + strName);
}
}
static class SingleItem<T>
{
/// <summary>
/// 获得T的对象
/// </summary>
/// <returns></returns>
public static T GetInstance()
{
return TryGetInstance(null);
}
/// <summary>
/// 获得T的对象
/// </summary>
/// <param name="onCreateInstance"></param>
/// <returns></returns>
private static T TryGetInstance(Func<T> onCreateInstance)
{
try
{
if (onCreateInstance == null)
return Activator.CreateInstance<T>();
else
return onCreateInstance();
}
catch
{
return default(T);
}
}
}
}