public class SrcMgr
    {
        private static SrcMgr _srcMgr = null;
        GameMain _game1 = null;        private SrcMgr()
        {        }        public static SrcMgr GetInstence()
        {
            if (_srcMgr == null)
            {
                _srcMgr = new SrcMgr();
            }
            return _srcMgr;
        }
} 【private static SrcMgr _srcMgr = null;】这句代码中怎么 private 和static同时出现,能不能帮我详细的讲解一下这句代码,麻烦大家了啊!

解决方案 »

  1.   

    private使得只有对象自身才能访问它。
    static保证了这个成员在类的所有实例中共享。singleton模式就是这么实践的。
      

  2.   

    本帖最后由 caozhy 于 2012-07-01 20:09:32 编辑
      

  3.   

    public class Singleton
    {
        private Singleton()
        {
        }    public static readonly Singleton instance = new Singleton();
    }  private为了不给实例化
    static保证了这个成员只能使用类访问,类对象不能访问
    singleton模式就是这么实践的。
      

  4.   

    private static SrcMgr _srcMgr = null;public static SrcMgr GetInstence()
      {
         if (_srcMgr == null)
         {
          _srcMgr = new SrcMgr();
         }
          return _srcMgr;
      
     【private static SrcMgr _srcMgr = null;】这句代码中加static没啥用啊
      

  5.   

    你的“用”就是产生一个单例,去掉static,就不“单”了。不是没啥用,而是你对你要做什么都不清楚。
      

  6.   

    private static SrcMgr _srcMgr = null;public static SrcMgr GetInstence()
      {
      if (_srcMgr == null)
      {
      _srcMgr = new SrcMgr();
      }
      return _srcMgr;你看看这段代码是不是怎样理解:
     private static SrcMgr _srcMgr = null;是声明一个私有的并且是静态的SrcMgr类型,私有的是因为防止改变量被其他类调用,静态的是因为 让该变量的值保持不变。
    外部类是通过GetInstence()方法,检查该类是否被实例化,如果被实例化调用被实例化的对象,如果没有就创建该类的实例。”是不是应该这样理解啊??
      

  7.   

    有一点不对"静态的是因为 让该变量的值保持不变。" 
    错,静态变量做不到值保持不变
    要保持值不变,有几种方法:
    1. const
    2. readonly 
    3. 设置为private并且确定不提供任何接口修改为什么_srcMgr要静态的? 因为GetInstence是静态的