欢迎来到天天文库
浏览记录
ID:8918395
大小:28.00 KB
页数:6页
时间:2018-04-12
《c#中的静态成员、静态方法、静态函数之说》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、嘉园地理科学与旅游学院GIS1103班-----寒星一C#静态成员
2、静态方法
3、静态构造函数一、静态成员(static)(1) 静态成员属于类所有,非静态成员属于类的实例所有。(2)每创建一个类的实例,都会在内存中为非静态成员新分配一块存储;非静态成员属于类所有,为各个类的实例所公用,无论类创建了多少实例,类的静态成员在内存中只占同一块区域。二、静态方法(1) 静态方法属于类所有,类实例化前即可使用。(2)非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。因为静态方法在类实例化前就可以使用,而
4、类中的非静态变量必须在实例化之后才能分配内存,这样,静态方法调用时无法判断非静态变量使用的内存地址。所以无法使用.而静态变量的地址对类来说是固定的,故可以使用。三、静态构造函数(1)用于对静态字段、只读字段等的初始化。(2)添加static关键字,不能添加访问修饰符,因为静态构造函数都是私自有的。 (3)类的静态构造函数在给定应用程序域中至多执行一次:只有创建类的实例或者引用类任何静态成员才激发静态构造函数.(4)静态构造函数是不可继承的,而且不能被直接调用。(5)如果类中包含用来开始执行的Main方法,则
5、该类的静态构造函数将在调用Main方法之前执行。任何带有初始值设定项的静态字段,则在执行该类的静态构造函数时,先要按照文本顺序执行那些初始值设定项。(6)如果没有编写静态构造函数,而这时类中包含带有初始值设定的静态字段,那么编译器会自动生成默认的静态构造函数。(7)无参数的构造函数可以与静态构造函数共存。尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突。MSDN对静态构造函数的解释:静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动
6、调用静态构造函数。静态构造函数具有以下特点:(1)静态构造函数既没有访问修饰符,也没有参数。-6-嘉园地理科学与旅游学院GIS1103班-----寒星(2)在创建第一个实例或引用任何静态成员之前,将自动调用静态构造(3)函数来初始化类。(4)无法直接调用静态构造函数。(5)在程序中,用户无法控制何时执行静态构造函数。(6)静态构造函数的典型用途是:当类使用日志文件时,将使用这种构造函数向日志文件中写入项。(7)静态构造函数在为非托管代码创建包装类时也很有用,此时该构造函数可以调用LoadLibrary方法。
7、二静态类和类成员用于创建无需创建类的实例就能够访问的数据和函数。静态类成员可用于分离独立于任何对象标识的数据和行为:无论对象发生什么更改,这些数据和函数都不会随之变化。当类中没有依赖对象标识的数据或行为时,就可以使用静态类。静态类类可以声明为static,指示它仅包含静态成员。不能使用new关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由.NET.Framework公共语言运行库(CLR)自动加载。使用静态类来包含不与特定对象关联的方法。例如,创建一组不操作实例数据并且不与代码中的特定对象关
8、联的方法是很常见的要求。您应该使用静态类来包含那些方法。静态类的主要功能如下:它们仅包含静态成员。它们不能被实例化。它们是密封的。它们不能包含实例构造函数(C#编程指南)。因此,创建静态类与创建仅包含静态成员和私有构造函数的类基本相同。私有构造函数阻止类被实例化。使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实利。-6-嘉园地理科学与旅游学院GIS1103班-----寒星静态类是密封的,因此不可被继承。它们不能从除Object外的任何类中继承。静态类不能包含
9、实例构造函数;但是,它们可以具有静态构造函数。有关更多信息,请参见静态构造函数(C#编程指南)。何时使用静态类假设有一个CompanyInfo类,它包含用于获取有关公司名称和地址信息的下列方法。classCompanyInfo{publicstringGetCompanyName(){return"CompanyName";}publicstringGetCompanyAddress(){return"CompanyAddress";}//...}不必将这些方法附加到该类的具体实例。因此,您可以将它声明为静
10、态类,而不是创建此类的不必要的实例:staticclassCompanyInfo{publicstaticstringGetCompanyName(){return"CompanyName";}publicstaticstringGetCompanyAddress(){return"CompanyAddress";}//...}使用静态类作为不与特定对象关联的方法的组织单元。此外,静态类能够使您的实现更简单、迅速
此文档下载收益归作者所有