您的位置:首页 > 编程语言 > C#

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

2011-02-24 20:13 615 查看
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 }

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

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

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

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

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

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

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

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

这种情况下静态方法不需要去改变某个实例的状态。只要得到少量的参数就可完成既定事情。比如判断一个文件是否存在,只要给个文件路径和文件名,就能知道该文件是否存在。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐