静态类中似乎只能建静态方法
我想问的是:
          一个非静态类中的静态方法,和一个静态类中的静态方法,包括这两个类他们有什么不一样的地方?
比如存在的时间阿等一些区别的地方
我个人认为
       静态类,整个类和他的方法都是贯穿始终,可非静态类呢,如果说他的静态方法一运行就被放入了资源,那它和静态类又有什么区别呢?那它的非静态的方法应该要建立对象来引用吧,除了这个外各都有什么优缺点?
    如果我想建个公共类,并写个静态方法,那是用静态类好呢,还是用非静态类好?

解决方案 »

  1.   

    静态函数是用来处理表态成员变量.   
      还可以做为线程的回调函数来使用.   
      还有一些设计模式也使用静态函数的特性来处理.   
      MFC的消息映射,动态创建之类的也是通过静态函数来实现的静态函数只能引用静态数据成员,而不能引用一般非静态数据成员。所以当只需要改变静态数据成员时使用。这种调用的结果不会访问或修改任何对象成员(非static)。所有的非静态类成员函数都隐含了一个this指针,所以可以调用类成员变量,而静态类成员函数   
      都没有这个this指针.   
        
      另:   "只有静态函数可以调静态成员变量",此句有误,类的静态成员变量只有一个实例,任何类成员函数都可以调静态成员变量
      

  2.   

    所有函数都是静态的。只是你写了static标志的,系统不传this指针,没写static的,调用的时候系统会传递this为函数的第一个参数。如果是static method,则不需要传递this。反之亦然。如果是static类,那就说明类无法被创建,则系统无法传递this参数。写了无法调用。我不记得系统如何处理,如果允许,那也无法使用,如果可能,系统应该不允许静态类里有非静态的方法存在。
      

  3.   

    我想这是一个设计层面的问题从语言功能来说静态类中的静态方法和普通类中的静态方法区别不大但要注意这两种不同类的设计动机是不同的。
    静态类永远不能被实例化,也没有实例化的概念和于此相关的任何行为,所以一般用来做工具类。
    普通类中的静态方法可以作为该类范围内的一个实用小用具来用,它的控制范围更多的与本类的对象有关系。静态类是C#中很棒的一个设计元素,再也不用写private的构造了,很帅气!