一、C#中四种访问修饰符及其区别?
1.属性修饰符
- Serializable:按值将对象封送到远程服务器
- STATread:单线程套间,是一种线程模型
- MATAThread:多线程套间,是一种线程模型
2.存取修饰符
- public:存取不受限制
- private:只有包含该成员的类可以存取
- internal:只有当前工程可以存取
- protected:只有包含该成员的类以及派生类可以存取
3.类修饰符
- abstract:抽象类,使这个类只能作为其他类的基类
- sealed:密封类,使这个类不能被继承
4.成员修饰符
- abstract:指示该方法或属性没有实现
- sealed:密封方法,防止派生类override修改方法,必须对基类的虚方法重载的方法才能密封,平时不能密封= =
public sealed override void SayHello()
{
//所以sealed总是和override一起用,此方法不能被子类改写
}
- delegate:委托,用来定义一个函数指针,C#中的事件驱动是基于delegate+event的
- const:指定该成员的值只读不允许修改。
- event:声明⼀个事件。
- extern:指示⽅法在外部实现。
- override:重写。对由基类继承成员的新实现。
- readonly:指示⼀个域只能在声明时以及相同类的内部被赋值。
- static:指示⼀个成员属于类型本身,⽽不是属于特定的对象。即在定义后可不经实例化,就可使⽤。
- virtual:指示⼀个⽅法或存取器的实现可以在继承类中被覆盖。
- new:在派⽣类中隐藏指定的基类成员,从⽽实现重写的功能。 若要隐藏继承类的成员,请使⽤相同名称在派⽣类中声明该成员,并⽤ new 修饰符修饰它。
二、简述private,public,protected,internal的区别
- public:对任何类和成员都公开,无限制访问
- private:仅对该类公开
- protected:对该类和其派生类公开
- internal:只能在包含该类的程序集中访问该类
- protected internal:protected + internal