实现一:
public class A
{
   public A(){};
   public string ReturnString(){ reutrn "Test";} 
}
实现二
public class B
{
   public B(){};
   public static string ReturnString(){ reutrn "Test";} 
}
//调用一
A a = new A();
a.ReturnString();//调用二
B.ReturnString();
比比两者执行速度,为什么?

解决方案 »

  1.   

    B快,static成员保存在内存里,不用实例化就可以使用
    而A要实例化一个成员(在内存中申请空间),再调用方法,就慢了
      

  2.   

    原来是这样的啊!学习Avoid(千金散尽还复来)
    我还以为...我太菜了,只知道表面
      

  3.   

    在性能上,静态方法确实要比非静态方法快一些,但不明显,并且我们使用静态方法的原因也不是因为它快.我个人认为静态方法与实例方法的使用只是为了区分语义.因为有些操作是与类相关而不是与这个类的实例相关的,此时可以考虑使用静态方法.比如一个会员类可以有一个公共静态的Delete(int ID)方法,这个方法用于删除任一指定的会员,但这个会员类的实例却不应该提供这样的方法.关于静态方法与非静态方法的性能:CLR通常在编译我们的代码时会对我们的代码进行安全检查并生成一些额外的代码.在调用静态方法时,CLR在找到类型后可以直接调用.但在调用非静态方法时,CLR先要判断该实例是否为NULL,如果为NULL则会引发异常,如果不为NULL,则根据实例推导出实例的类型,最后实现调用.也就是调用所经过的步骤数量是不一样,从而造成非静态方法要比静态方法慢,但这种差异在运行时应该是很细微的.