关于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 }
何时用静态方法,何时用实例方法
先说实例方法,当你给一个类写一个方法,如果该方法需要访问某个实例的成员变量时,那么就将该方法定义成实例方法。一类的实例通常有一些成员变量,其中含有该实例的状态信息。而该方法需要改变这些状态。那么该方法需要声明成实例方法。
静态方法正好相反,它不需要访问某个实例的成员变量,它不需要去改变某个实例的状态。我们把该方法定义成静态方法。
第一种方式, 声明实例,调用实例方法
当一个类有多个实例,例如学生这个类,实例可以有学生甲,学生乙,学生丙,等等,我们就用第一种方式。在多线程的情况下,只要每个线程都创建自己的实例,那么第一种方法通常是线程安全的。
第二种方式,通过一个静态的实例,去调用实例方法
这种情况比较特殊,通常是整个程序里该类唯一的一个实例,我们通过调用该实例的实例方法来改变该实例的某些状态。这一个实例在多线程的情况下,通常是线程不安全的。除非我们给这个实例加锁。防止其他线程访问该实例。
第三种方式,直接调用静态方法
这种情况下静态方法不需要去改变某个实例的状态。只要得到少量的参数就可完成既定事情。比如判断一个文件是否存在,只要给个文件路径和文件名,就能知道该文件是否存在。
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 }
何时用静态方法,何时用实例方法
先说实例方法,当你给一个类写一个方法,如果该方法需要访问某个实例的成员变量时,那么就将该方法定义成实例方法。一类的实例通常有一些成员变量,其中含有该实例的状态信息。而该方法需要改变这些状态。那么该方法需要声明成实例方法。
静态方法正好相反,它不需要访问某个实例的成员变量,它不需要去改变某个实例的状态。我们把该方法定义成静态方法。
第一种方式, 声明实例,调用实例方法
当一个类有多个实例,例如学生这个类,实例可以有学生甲,学生乙,学生丙,等等,我们就用第一种方式。在多线程的情况下,只要每个线程都创建自己的实例,那么第一种方法通常是线程安全的。
第二种方式,通过一个静态的实例,去调用实例方法
这种情况比较特殊,通常是整个程序里该类唯一的一个实例,我们通过调用该实例的实例方法来改变该实例的某些状态。这一个实例在多线程的情况下,通常是线程不安全的。除非我们给这个实例加锁。防止其他线程访问该实例。
第三种方式,直接调用静态方法
这种情况下静态方法不需要去改变某个实例的状态。只要得到少量的参数就可完成既定事情。比如判断一个文件是否存在,只要给个文件路径和文件名,就能知道该文件是否存在。
相关文章推荐
- 一起谈.NET技术,关于c#静态方法和实例方法的辨析和应用
- 关于c#静态方法和实例方法的辨析和应用
- 【转】一起谈.NET技术,关于c#静态方法和实例方法的辨析和应用
- 关于c#静态方法和实例方法的辨析和应用(转载)
- 关于c#静态方法和实例方法的辨析和应用
- c#中实例方法和静态方法的辨析与应用
- Objective-C 关于静态方法与实例方法的转载
- 关于静态方法和实例方法的一些误区。
- C#静态方法与非静态方法实例分析
- Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库 自定义日志记录功能,按日记录,很方便 C#常量和字段以及各种方法的语法总结 类型,对象,线程栈,托管堆在运行时的关系,以及clr如何调用静态方法,实例方法,和虚方法 asp.net webapi 自定义身份验证
- 关于百度编辑器UEditor(1.4.3)在C#.NET中的应用实例
- C# 关于未找到元数据文件.exe和不包含适合于入口点的静态“Main”方法
- Win2003下关于c#读写Excel时,出现存取被拒&Excel实例化出错的一个解决方法
- Objective-C 关于静态方法与实例方法
- 关于C#静态方法调用问题
- c#静态方法不可以直接调用实例方法
- c#静态方法和实例方法误区(转自一位前辈的博文)
- C# 静态方法和实例方法
- 编写高质量代码改善C#程序的157个建议——建议100:静态方法和实例方法没有区别