C#中什么情况下使用静态类

2024-12-25 04:15:59
推荐回答(2个)
回答1:

C#静态类和静态类成员用于创建无需创建类的实例就能够访问的数据和函数。静态类成员可用于分离独立于任何对象标识的数据和行为:无论对象发生什么更改,这些数据和函数都不会随之变化。当类中没有依赖对象标识的数据或行为时,就可以使用静态类。让我们来看看静态类:类可以声明为static的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET Framework 公共语言运行库 (CLR) 自动加载。使用静态类来包含不与特定对象关联的方法。例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该使用静态类来包含那些方法。静态类的主要功能如下:1、它们仅包含静态成员。2、它们不能被实例化。3、它们是密封的。4、它们不能包含实例构造函数(C# 编程指南)。因此创建静态类与创建仅包含静态成员和私有构造函数的类大致一样。私有构造函数阻止类被实例化。使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实利。静态类是密封的,因此不可被继承。静态类不能包含构造函数,但仍可声明静态构造函数以分配初始值或设置某个静态状态。何时使用静态类假设有一个类 CompanyInfo,它包含用于获取有关公司名称和地址信息的下列方法。class CompanyInfo { public string GetCompanyName() { return "CompanyName"; } public string GetCompanyAddress() { return "CompanyAddress"; } //... } 不需要将这些方法附加到该类的具体实例。因此,您可以将它声明为静态类,而不是创建此类的不必要实例,如下所示:static class CompanyInfo { public static string GetCompanyName() { return "CompanyName"; } public static string GetCompanyAddress() { return "CompanyAddress"; } //... } 使用静态类作为不与特定对象关联的方法的组织单元。此外,静态类能够使您的实现更简单、迅速,因为您不必创建对象就能调用其方法。以一种有意义的方式组织类内部的方法(例如 System 命名空间中的 Math 类的方法)是很有用的。静态成员即使没有创建类的实例,也可以调用该类中的静态方法、字段、属性或事件。如果创建了该类的任何实例,不能使用实例来访问静态成员。只存在静态字段和事件的一个副本,静态方法和属性只能访问静态字段和静态事件。静态成员通常用于表示不会随对象状态而变化的数据或计算;例如,数学库可能包含用于计算正弦和余弦的静态方法。在成员的返回类型之前使用 static 关键字来声明静态类成员,例如:public class Automobile { public static int NumberOfWheels = 4; public static int SizeOfGasTank { get { return 15; } } public static void Drive() { } public static event EventType RunOutOfGas; //other non-static fields and properties... } 静态成员在第一次被访问之前并且在任何静态构造函数(如调用的话)之前初始化。若要访问静态类成员,应使用类名而不是变量名来指定该成员的位置。例如:Automobile.Drive(); int i = Automobile.NumberOfWheels; C#静态类和静态类成员的基本内容就向你介绍到这里,希望对你了解和学习C#静态类和静态类成员有所帮助。 http://developer.51cto.com/art/200908/147748.htm

回答2:

第一句话:静态类和类成员用于创建无需创建类的实例就能够访问的数据和函数。
从里面我们可以得出,创建非静态的时候我们不需要实例该类我们直接可以用。
第二句:静态类成员可用于分离独立于任何对象标识的数据和行为:无论对象发生什么更改,这些数据和函数都不会随之变化
这句话我认识为一旦创建静态类以后,静态类将与原来的实体独立,他们之间不会因为改变实体某个方法改变而影响静态类。
第三句话:当类中没有依赖对象标识的数据或行为时,就可以使用静态类。
这句我点醒了我,他切入主题告诉我们什么时候我们可以声明静态的,在我们这个静态类不依赖主题,他可以完全独立的时候我们可以把它声明称静态的。

总结:
1 静态类可以直接调用,不需要声明实体。
2 静态类不会因为主体的改变而影响他。
3 静态类声明必须是对主体没有依赖情况下才可以声明。 简介明了。希望有帮助