【转载】C#静态类和静态类成员详解

    C#静态类和静态类成员具体的使用是如何的呢?他们会起到什么作用呢?那么本文就向你详细介绍这方面的内容。

     

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

    让我们来看看静态类:

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

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

    静态类的主要功能如下:

    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. }  

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

    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 类的方法)是很有用的。静态成员

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

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

    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. }  

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

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

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

    原文地址:http://developer.51cto.com/art/200908/147748.htm

posted @ 2011-01-21 15:19  ebusi2010  阅读(248)  评论(0编辑  收藏  举报