方法内部的变量当然不能用static等修饰符修饰了,否则就违反OO的封装性要求了

解决方案 »

  1.   

    阿良的说法,让我不解。这跟oo有什么关系?难道要这么想该上面的东西?:class X
    {
      // ...
      private static int i = 0;  //注意,在这里有个东东。当然要是private,否则就暴露出去了。
      public void Func()
      {
        // 使用 i 
        // ...
      }
    }
      

  2.   

    可以定义static变量,但是只能在static修饰的方法、属性内使用
    class X
    {  public static int Number{get{return i;}}
      private static int i = 0;
      public static void Func()
      {
         i++
      }
    }X.Func();
    MessageBox.Show(X.Number.ToString());
      

  3.   

    ???
    private static int i = 0;暴露又怎么了??
    当然应该这么用呀?
    上面的你是定义了一个静态方法,干嘛呀?不定也不也行么??
      

  4.   

    我知道这各问题是个细节问题。不过也是个哲学问题。否则心理老堵得荒。易水之风 所说的,“可以定义static变量,但是只能在static修饰的方法、属性内使用”
    其中“可以定义 static 变量”是指定义一个类的static成员,而不是指在方法体内和属性get,set访问器内定义吧?——而这正是我的问题所在。
      

  5.   

    是呀,你想一下,你把一个Static 变量
    定义在你的一个方法中,跟定义的一个一般变量有什么区别!
    况且,SDK 压根就不让!
      

  6.   

    在oo的思想里,类的方法内部的实施细节、变量使用方式都对外是封装起来的,外部知道入口、出口即可,方法内部的变量定义,只在方法内部可见、可访问,而无法在外部访问、控制。
    所以你在方法内部定义一个static变量就没意义了:这样的变量在方法外部就是无法访问的,有没有static有什么区别呢?仔细看一下易水之风兄的程序,你就会发现,他的static对象是类一级的,而不是方法内的。
    方法内的变量用修饰符修饰是没有意义的。