首页 新闻 会员 周边

C# 使用静态类的优缺点

0
悬赏园豆:5 [待解决问题]

C# 使用静态类的优缺点

~~奔跑~~的主页 ~~奔跑~~ | 初学一级 | 园豆:110
提问于:2010-09-20 14:10
< >
分享
所有回答(4)
0

整个类型在程序运行期间只加载一次。 这样是对于那些经常使用的类型来说的, 那就不用每次使用前都先加载。效率高些。但是对那些不常用的类型来说,如果是静态类型,那就要一直占用相当的内存;一直到程序停止。或者应用程序域被卸载。所以应该只对那些常用的类型定义成静态类型。

HUHU慈悲 | 园豆:9973 (大侠五级) | 2010-09-20 14:39
谢谢!
支持(0) 反对(0) ~~奔跑~~ | 园豆:110 (初学一级) | 2010-09-20 17:08
0

一般工具类库都为静态类,静态类失去面向对象的特性。或者当一个类里都为静态函数时,自然修改为静态类...

Astar | 园豆:40805 (高人七级) | 2010-09-20 17:07
谢谢!
支持(0) 反对(0) ~~奔跑~~ | 园豆:110 (初学一级) | 2010-09-20 17:09
0

C#静态类和静态类成员用于创建无需创建类的实例就能够访问的数据和函数。静态类成员可用于分离独立于任何对象标识的数据和行为:无论对象发生什么更改,这些数据和函数都不会随之变化。当类中没有依赖对象标识的数据或行为时,就可以使用静态类。

让我们来看看静态类:

类可以声明为static的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET Framework 公共语言运行库 (CLR) 自动加载。

使用静态类来包含不与特定对象关联的方法。例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该使用静态类来包含那些方法。http://www.lugujk.com/wenwen/

静态类的主要功能如下:

1、它们仅包含静态成员。

2、它们不能被实例化。

3、它们是密封的。

4、它们不能包含实例构造函数(C# 编程指南)。

因此创建静态类与创建仅包含静态成员和私有构造函数的类大致一样。私有构造函数阻止类被实例化。

使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实利。

静态类是密封的,因此不可被继承。静态类不能包含构造函数,但仍可声明静态构造函数以分配初始值或设置某个静态状态。

何时使用静态类

假设有一个类 CompanyInfo,它包含用于获取有关公司名称和地址信息的下列方法。

  1. class CompanyInfo  
  2.  
  3. {  
  4.  
  5. public string GetCompanyName() { return "CompanyName"; }  
  6.  
  7. public string GetCompanyAddress() { return "CompanyAddress"; }  
  8.  
  9. //...  
  10.  
  11. }  

不需要将这些方法附加到该类的具体实例。因此,您可以将它声明为静态类,而不是创建此类的不必要实例,如下所示:http://wenda.lugujk.com

  1. static class CompanyInfo  
  2.  
  3. {  
  4.  
  5. public static string GetCompanyName() {   
  6. return "CompanyName"; }  
  7.  
  8. public static string GetCompanyAddress() {   
  9. return "CompanyAddress"; }  
  10.  
  11. //...  
  12.  
  13. }  

使用静态类作为不与特定对象关联的方法的组织单元。此外,静态类能够使您的实现更简单、迅速,因为您不必创建对象就能调用其方法。以一种有意义的方式组织类内部的方法(例如 System 命名空间中的 Math 类的方法)是很有用的。www.qweih.cn

即使没有创建类的实例,也可以调用该类中的静态方法、字段、属性或事件。如果创建了该类的任何实例,不能使用实例来访问静态成员。只存在静态字段和事件的一个副本,静态方法和属性只能访问静态字段和静态事件。静态成员通常用于表示不会随对象状态而变化的数据或计算;例如,数学库可能包含用于计算正弦和余弦的静态方法。

在成员的返回类型之前使用 static 关键字来声明静态类成员,例如:http://myqishi.com.cn

  1. public class Automobile  
  2.  
  3. {  
  4.  
  5. public static int NumberOfWheels = 4;  
  6.  
  7. public static int SizeOfGasTank  
  8.  
  9. {  
  10.  
  11. get 
  12.  
  13. {  
  14.  
  15. return 15;  
  16.  
  17. }  
  18.  
  19. }  
  20.  
  21. public static void Drive() { }  
  22.  
  23. public static event EventType RunOutOfGas;  
  24. //other non-static fields and properties...  
  25.  
  26. }  

静态成员在第一次被访问之前并且在任何静态构造函数(如调用的话)之前初始化。若要访问静态类成员,应使用类名而不是变量名来指定该成员的位置。例如:www.baikeda.info

  1. Automobile.Drive();  
  2.  
  3. int i = Automobile.NumberOfWheels; 

C#静态类和静态类成员的基本内容就向你介绍到这里,希望对你了解和学习C#静态类和静态类成员有所帮助。

绿谷健康 | 园豆:210 (菜鸟二级) | 2010-09-23 15:33
0

静态类的理解:http://kb.cnblogs.com/page/104263/

dudu | 园豆:30979 (高人七级) | 2011-06-04 16:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册