关于c#静态方法和实例方法的辨析和应用

    技术2022-05-20  54

    public class SomeClass 02 { 03     private string myfield = null; 04     public static instance = new SomeClass(); 05     public instranceMethod() {}; 06     public static staticMethod() {}; 07 } 08    09 public class AnotherClass 10 { 11     public static Main() 12     { 13         //第一种方式, 声明实例,调用实例方法 14       SomeClass someClass = new SomeClass(); 15          someClass.instanceMethod(); 16    17         //第二种方式,通过一个静态的实例,去调用实例方法 18       SomeClass.instance.instanceMethod(); 19    20         //第三种方式,直接调用静态方法 21       SomeClass.staticMethod(); 22     } 23 }  

    何时用静态方法,何时用实例方法

     

    先说实例方法,当你给一个类写一个方法,如果该方法需要访问某个实例的成员变量时,那么就将该方法定义成实例方法。一类的实例通常有一些成员变量,其中含有该实例的状态信息。而该方法需要改变这些状态。那么该方法需要声明成实例方法。

     

    静态方法正好相反,它不需要访问某个实例的成员变量,它不需要去改变某个实例的状态。我们把该方法定义成静态方法。

     

    第一种方式, 声明实例,调用实例方法

     

    当一个类有多个实例,例如学生这个类,实例可以有学生甲,学生乙,学生丙,等等,我们就用第一种方式。在多线程的情况下,只要每个线程都创建自己的实例,那么第一种方法通常是线程安全的。

     

    第二种方式,通过一个静态的实例,去调用实例方法

    这种情况比较特殊,通常是整个程序里该类唯一的一个实例,我们通过调用该实例的实例方法来改变该实例的某些状态。这一个实例在多线程的情况下,通常是线程不安全的。除非我们给这个实例加锁。防止其他线程访问该实例。

     

    第三种方式,直接调用静态方法

     

    这种情况下静态方法不需要去改变某个实例的状态。只要得到少量的参数就可完成既定事情。比如判断一个文件是否存在,只要给个文件路径和文件名,就能知道该文件是否存在。


    最新回复(0)