比如
public class ExampleClass()
{
   public static void DoSometing(string strParam)//静态方法
    {
          //做一些事情,比如吐槽,把妹,上CSDN
    }
  public void DoSometing(string strParam)//实例方法
    {
          //做一些事情,比如吐槽,把妹,上CSDN
    }
 
}
我们调用方法可用ExampleClass.DoSometing(string strParam)
也可以这样调用 ExampleClass myClass = new ExampleClass()
  myClass.DoSometing(string strParam)
这两种方法有何不同,既然静态方法可以省去New这一步,为何不都用静态方法,这样代码还简洁编程中国社区

解决方案 »

  1.   

    http://www.cnblogs.com/NothingIsImpossible/archive/2010/07/28/1786706.html
      

  2.   

    面向对象的三个基本特征是:封装、继承、多态,静态方法啥也体现不出来。只用静态方法方法就不是面向对象是面向方法了,面向对象有啥好处不用我说了吧。还有就是静态变量在应用程序域是唯一,在web开发中很容易出问题。
      

  3.   

    这tmd是谁说的?
    静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。
      

  4.   

    很简单,如果一个方法需要“实例”参与才能完成,那么需要定义成成员方法,否则就是静态方法。举例:
    Math.Sin() 方法,你觉得求sin需要Math类的什么状态?不需要吧。
    string.Trim() 方法则不同,你需要知道具体的string才能对它截取。给一个极端的例子,比如“单例模式”,通过封闭构造函数和使用GetInstance获取对象,显然这个方法必须是静态的。当然,任何成员方法,都可以改造成静态方法,只要把成员变成一个参数,比如
    string->Trim()完全可以用string::Trim(string this)表示。这样,面向对象可以完全退回面向过程的方法——事实上,编译器可以把任何面向对象的代码转换成面向过程的形式(机器就是面向过程的)。那么你的问题退回了“什么时候我们要面向对象”,答案很简单——当你从码农进化成程序员的时候,前者的目标是完成功能,后者在此之上追求优雅、高质量、容易理解和维护的设计。