修饰字段
字段,成员变量,它表示存储位置,是C#中类不可缺少的一部分.
修饰字段C#提供5种:
internal :扩展了C++原来的friend修饰符.在有必要使两个类的某些字段相互可见时,我们将这些类的字段声明为 internal,然后将它们放在一个程序集中编译即可.如果对它们的继承子类也可见的话,声明为protected internal实际这也是程序集本来的意图,即将逻辑相关的的类组合封装在一起.
readonly只读字段:只读不能进行写操作,const关键字也不能被修改
1.const ,readonly的值一旦被初始化都不可以在改写
2.const只能在声明时初始化 ,readonly即可以在声明时初始化,也可以在构造器中初始化.
3.const隐含static,不可以再写static const;readonly不默认static,如需要可以写static readonly
4.const是编译静态解析的常量,因此起表达式必须在编译时就可以求值,readonly是运行期动态解析的常量
5.const可用来修饰类中的成员,也可以修饰函数体内的局部变量;readonly只可以用于修饰类中的成员
static 静态方法
1.静态方法是一种特殊的成员方法,它不属于类的某一个具体的实例,属于类本身。
2.static:静态字段属于类,为类的所有对象所共用.非静态字段属于某个具体的对象,为特定的对象专有.
非静态成员在类的每个实例中都占有一个存储或者说是一个副本,而静态方法为类所共享的它无法判断当前 的非静态成员属于那一个实例。
所以在静态方法不能使用非静态成员 。
C#严格归定非静态字段只能通过对象来访问,静态字段只能通过类来访问。
c#中abstract与virtual的区别
1.abstract方法只能在抽象类中声明,虚方法则不是。
abstract方法必须在派生类中重写,而virtual则不必
2.abstract方法不能声明方法实体,
abstract public void SD();
虚方法则可以
3.虚方法可以实现多态,而抽象方法不可以。。。
virtual标记方法为虚方法
1.可在派生类中以override覆盖此方法
2.不覆盖也可由对象调用
3.无此标记的方法(也无其他标记),重写时需用new隐藏原方法
abstract 与virtual : 方法重写时都使用 override 关键