泛型类的静态属性和方法

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


首页 我的博客
粤ICP备17103704号