- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一C#静态成员|静态方法|静态构造函数一、静态成员(static)(1) 静态成员属于类所有,非静态成员属于类的实例所有。(2) 每创建一个类的实例,都会在内存中为非静态成员新分配一块存储;非静态成员属于类所有,为各个类的实例所公用,无论类创建了多少实例,类的静态成员在内存中只占同一块区域。二、静态方法(1) 静态方法属于类所有,类实例化前即可使用。(2) 非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存,这样,静态方法调用时无法判断非静态变量使用的内存地址。所以无法使用.而静态变量的地址对类来说是固定的,故可以使用。 三、静态构造函数(1) 用于对静态字段、只读字段等的初始化。(2) 添加static关键字,不能添加访问修饰符,因为静态构造函数都是 私自有的。 (3) 类的静态构造函数在给定应用程序域中至多执行一次:只有创建类的实例或者引用类任何静态成员才激发静态构造函数 .(4) 静态构造函数是不可继承的,而且不能被直接调用。(5) 如果类中包含用来开始执行的 Main 方法,则该类的静态构造函数将在调用 Main 方法之前执行。任何带有初始值设定项的静态字段,则在执行该类的静态构造函数时,先要按照文本顺序执行那些初始值设定项。(6) 如果没有编写静态构造函数,而这时类中包含带有初始值设定的静态字段,那么编译器会自动生成默认的静态构造函数。(7) 无参数的构造函数可以与静态构造函数共存。尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突。 MSDN对静态构造函数的解释:静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。静态构造函数具有以下特点:(1)静态构造函数既没有访问修饰符,也没有参数。(2)在创建第一个实例或引用任何静态成员之前,将自动调用静态构造(3)函数来初始化类。 (4)无法直接调用静态构造函数。(5)在程序中,用户无法控制何时执行静态构造函数。(6)静态构造函数的典型用途是:当类使用日志文件时,将使用这种构造函数向日志文件中写入项。(7)静态构造函数在为非托管代码创建包装类时也很有用,此时该构造函数可以调用 LoadLibrary 方法。二静态类和类成员用于创建无需创建类的实例就能够访问的数据和函数。静态类成员可用于分离独立于任何对象标识的数据和行为:无论对象发生什么更改,这些数据和函数都不会随之变化。当类中没有依赖对象标识的数据或行为时,就可以使用静态类。静态类类可以声明为 static,指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET.Framework公共语言运行库 (CLR) 自动加载。使用静态类来包含不与特定对象关联的方法。例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该使用静态类来包含那些方法。静态类的主要功能如下:它们仅包含静态成员。它们不能被实例化。它们是密封的。它们不能包含实例构造函数(C# 编程指南)。因此,创建静态类与创建仅包含静态成员和私有构造函数的类基本相同。私有构造函数阻止类被实例化。使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实利。静态类是密封的,因此不可被继承。它们不能从除 Object 外的任何类中继承。静态类不能包含实例构造函数;但是,它们可以具有静态构造函数。有关更多信息,请参见静态构造函数(C# 编程指南)。何时使用静态类假设有一个 CompanyInfo 类,它包含用于获取有关公司名称和地址信息的下列方法。classCompanyInfo{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; }//...}使用静态类作为不与特定对象关联的方法的组织单元。此外,静态类能够使您的实现更简单、迅速,因为您不必创建对象就能调用其方法。以一种有意义的方式组织类内部
文档评论(0)