对于泛型类,如A<T>,T为泛型,随着T的不同,这个类就是一个不同的类,也就是说A<int>和A<string>是两个不同的类型,所以他们的静态属性和方法是各自拥有和不是唯一的。
class Singleton<T> where T:new()
{
private static T _instance = default(T);
public static T GetInstance()
{
if (_instance == null)
{
_instance = new T();
}
return _instance;
}
}class NetManager
{
public string Name = "Hello";
}class GameManager
{
public int t = 100;
}class Program
{
static void Main(string[] args)
{
GameManager g = Singleton<GameManager>.GetInstance();
NetManager n = Singleton<NetManager>.GetInstance();
Console.WriteLine(n.Name + g.t);
Console.ReadKey();
}
}这样子,利用这个就是“一个泛型类的静态属性和方法不同的类型T是不同类型”,就可以把想控制为单例的类都通过这个访问,减少了很多重复的单例类的编写,像往常那样编写就可以了。坏处就是,这个单例类可能会没有经过这个步奏,从而会产生多个实例。