【C#之路】如何使用C#实现单例类的继承
转载请注明本文地址:
http://blog.csdn.net/elezeor/article/details/11468507
这是前几天在编写Unity游戏时随手写的一个类,
考虑到其中还是有一些可学点的,
就将将关键部分提取出,
发上来了。
using UnityEngine;using System.Collections;using System.Collections.Generic;using CompanionArray = System.Collections.Generic.Dictionary<string,UnityEngine.Transform>;public abstract class MembersBase<T> where T : new(){public CompanionArray companions;private static T instance;public static T Instance{get{if(null == instance)instance = new T();return instance;}}protected MembersBase(){companions = new CompanionArray();}}public class SelectedMembers : MembersBase<SelectedMembers>{public SelectedMembers():base(){}}
各位一看便知。
简单注释几点:
--首先要注意,要想将单例类继承,
基类需要为泛型类。
然后这样在子类中只需要将己类传入即可。
--where T: new T()
这个语句代表使用的这个泛型需要包含一个无参构造函数,
当然,这个也是可以限定多个条件的。具体自行谷歌:C# keyword where
--C#中的typedef
这个是顺带一提,
C#中使用C++的typedef功能就是像开头那样,
使用using 语句就可完成。
涉及到泛型尤其是名字很长的Dictionary时尤为好用。