写给初学者之访问控制符static-创新互联

C#的修饰符:static

创新互联建站长期为上1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为西和企业提供专业的成都网站制作、网站建设,西和网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。

声明属于类型本生而不属于实体对象的成员。

一、非静态类

1、非静态类可以包含静态的方法、字段、属性或事件。 静态的类成员属于类级别的,不属于类的任何实例,类外不可以通过类的实体对象来调用静态变量,要用类名来调用,(如现在有一个Student 类,这个类里有一个static  string  name,当其他类需要调它的时候就要用Student.name);无论对一个类创建多少个实例,它的静态成员都只有一个副本,类里的所有成员都可以访问它,可以改变它的值。 静态方法和属性不能访问其包含类型中的非静态字段和事件,并且不能访问任何对象的实例变量(除非在方法参数中显式传递)。

静态字段有两个常见的用法:一是记录已实例化对象的个数;二是存储必须在所有实例之间共享的值。

静态方法可以被重载但不能被重写,因为它们属于类,不属于类的任何实例。

2、静态成员在第一次被访问之前并且在调用静态构造函数(如有存在)之前进行初始化。  静态构造函数用于初始化任何 静态 数据,或用于执行仅需执行一次的特定操作。 在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。

public class Students

{

//定义静态变量

public staic int Num;

//静态构造函数

static Students()

{

Num = 30;

}

}

3、静态构造函数具有以下特点:

静态构造函数既没有访问修饰符,也没有参数。用于对静态字段、只读字段等的初始化。

在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。类的静态构造函数在给定应用程序域中至多执行一次。

静态构造函数是不可继承的,而且不能被直接调用。

在程序中,用户无法控制何时执行静态构造函数。

如果没有编写静态构造函数,而这时类中包含带有初始值设定的静态字段,那么编译器会自动生成默认的静态构造函数。

4、静态变量的几点说明:

(1)静态方法和静态数据成员相当于共享变量,只有“一份”,为该类的所有对象所共有,因而在需要共享数据时,定义这种类型时很好的选择。 一但定义一个类后(不一定要实例化对象)该类的所有静态成员就载入内存(并不是程序启动,就装入内存,没有定义该类时它不会载入内存) 静态成员的作用域与它所属的类的作用域相同。

(2)方法内部的静态变量,执行完静态变量值不消失,再次执行此对象的方法时,值仍存在,它不是在栈中分配的,是在静态区分析的,(共有两种变量存储在静态存储区:全局变量和static变量)这是与局部变量大的区别。

(3)由于静态成员函数存在于类一级,并且不是对象的一部分,因此没有 this 指针。在静态方法中引用 this 是错误的。

二、静态类:

声明为static,它仅包含静态成员,不能用new静态类的实例。使用静态类来包含不与特定对象关联的方法。

功能:仅包含静态成员,不能被实例化,是密封的,不能包含实例构造函数,可包含静态构造函数以分配初始值或设置某个静态变量。

优点:编译器能够执行检查以确保不致偶然地添加势力成员。编译器将保证不会创建此类的实例。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文名称:写给初学者之访问控制符static-创新互联
新闻来源:http://scyanting.com/article/ceodeg.html