C#中的修饰符

一、属性修饰符:

 1、Serializable:按值将对象封送到远程服务器。在按值封送对象时,就会创建一个该对象的副本,并将其序列化传送到服务器。任何对该对象的方法调用都是在服务器上进行的。 

2、STAThread: 即Single-Threaded Apartment,是单线程套间的意思,是一种线程模型。 线程模式用于处理组件在多线程的环境里并行与并互的方式,套间线程(STAThread)模式中接口跨线程传递必须被调度(Marshal),不调度直传肯定会失败!而MTA或FreeThread模式中的接口可以不经调度直接传递。这种调度在特定的环境中非常影响性能(可有几百倍之差)。线程模式是微软的COM基础中的极其重要的概念。

 3、MTAThread: 即MultiThreaded Apartment,是多线程套间的意思,同上也是一种线程模型。 

 

二、存取修饰符: 

1、public:存取不受限制。 

2、protected:只有包含该成员的类以及派生类可以存取。

3、private:只有包含该成员的类可以存取。 

4、internal:对整个应用程序是共有的,其他应用程序不可以访问该类,即只有在同一程序集的文件中,其内部类型或成员才是可存取的。 

 

三、类修饰符:

1、abstract:抽象类。抽象类不能实例化。抽象类的用途是提供多个派生类可共享的基类的公共定义。 

2、sealed:密封类。当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承。  密封类不能同时又是抽象类,因为抽象类总是希望被继承的,二者明显矛盾了。 

 

四、成员修饰符: 

1、abstract:抽象方法。抽象方法没有实现,所以方法定义后面是分号,而不是常规的方法块。抽象类的派生类必须实现所有抽象方法(除非派生类也是抽象类)。当抽象类从基类继承虚方法时,抽象类可以使用抽象方法重写该虚方法。即抽象类可以强制派生类为虚方法提供新的方法实现指示该方法或属性没有实现。这几点非常有用。

2、sealed:密封方法。可以防止在派生类中对该方法的override(重载)。不是类的每个成员方法都可以作为密封方法,密封方法必须对基类的虚方法进行重载,提供具体的实现方法。所以,在方法的声明中,sealed修饰符总是和override修饰符同时使用。 

3、delegate:委托。C#中的事件驱动是基于delegate + event的。这些我们放到后面单拿出来吧。 

4、const:指定该成员为常量,其值只读,不允许修改。 

5、event:声明一个事件。一样放到后面,和委托一起弄吧。 

6、extern:指示方法在外部实现。 

7、override:重写。对由基类继承成员的新实现。 

8、readonly:指示一个域只能在声明时以及相同类的内部被赋值。 

9、static:指示一个成员属于类本身,而不是属于特定的对象。即在定义后可不经实例化,就可使用。 

10、virtual:虚拟成员。指示一个方法或存取器的实现可以由派生类中的重写成员更改。virtual其实在程序的版本升级中都要用到,因为一个程序不是做的非常完美之后才把它投放到市场去让客户使用的,这样也不会发现程序的漏洞,另外也挣不到利润啦,所以每个程序都有一个升级的过程。visual由于可以使用new关键字来隐藏基类中的同名成员和方法外,还可以使用override来重写。使用它既可以保持与以前的版本实现兼容,又可以向后扩展。 

11、new:在派生类中隐藏指定的基类成员,从而实现重写的功能。若要隐藏继承类的成员,请使用相同名称在派生类中声明该成员,并用 new 修饰符修饰它。 

 

 

 

 

 

 

09-12 12:12