c#中的成员与关键字
成员
成员指类中的两个分类:
数据成员:常量、字段(静态字段,实例字段)(注意:类成员变量叫做字段,字段是变量的一种,隶属于类。)
函数成员:属性、方法、嵌套类、索引器、事件、运算符、实例构造函数、析构函数、静态构造函数
关键字
权限修饰符:
public:可修饰类和类型成员
任何地方都可以访问到public类
internal:可修饰类和类型成员
只能在同一程序集内访问到internal类
private:可修饰类型成员
不可被子类继承
protect:可修饰类型成员
可被子类继承
它们的访问权限如下:

图片来源于博客:https://www.cnblogs.com/RascallySnake/archive/2010/05/14/1735704.html
static:静态。可修饰类、字段、属性和方法
标记为static的字段、属性和方法可以不用创建实例,直接类名.XX使用,下面详细说明下static
先解释下静态成员和非静态成员的区别
静态成员属于类所有,非静态成员属于类的实例所有
每创建一个类的实例,都会在内存中为非静态成员新分配一块内存;而静态成员属于类所有,为各个类公用,所以无论类创建了多少实例,类的静态成员在内存中都只占同一块内存。
static有三种用法,分别是用于变量前、方法前和类前:
变量前:
因为在内存中一直占用的同一块内存,所以每次使用该变量所在的方法、类和自定义类时,变量值为最后一次被赋值的值(可以理解为每次调用后值都会叠加),称为静态变量。
方法前:
该方法为所在类或自定义持有,而不是这个类所有,也称为静态方法。静态方法只能访问类中的静态成员,但可以创建其他类的实例(除了静态类,因为静态类无法创建实例)。
深入了解的原因就是,因为静态方法在类实例化前就可以使用了,而类中非静态变量必须在实例化之后才能分配内存,这样静态方法在调用时无法判断非静态变量使用的内存地址,所以无法使用。
实际上静态变量和静态方法效率上要比实例高,因为静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存。但这样带来的缺点就是不能自动进行销毁,而实例化的则可以做销毁。
ps:所以在静态方法中要调用非静态的方法,需要创建非静态方法所在的类的实例,然后调用类中的那个非静态方法。
类前:
静态类无法创建实例。类下的方法全是静态方法,类下的非静态方法都是无法使用的。所以如果自定义的静态类中想创建public方法时不允许的(vs code中会提示错误,加上static即可)
以上参考自大佬博客:https://www.cnblogs.com/fsspring/p/9510828.html,写的非常好,看完茅塞顿开

浙公网安备 33010602011771号