对于泛型类,如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是不同类型”,就可以把想控制为单例的类都通过这个访问,减少了很多重复的单例类的编写,像往常那样编写就可以了。坏处就是,这个单例类可能会没有经过这个步奏,从而会产生多个实例。