C#关键字总结

C#关键字:

abstract 

可以和类、方法、属性、索引器及事件一起使用,标识一个可以扩展但不能被实体化的、必须被实现的类或方法。

as               

一个转换操作符,如果转换失败,就返回null。 

Base

用于访问被派生类或构造中的同名成员隐藏的基类成员。

catch         

定义一个代码块,在特定类型异常抛出时,执行块内代码。参见try和finally。

checked        

既是操作符又是语句。确保编译器运行时,检查整数类型操作或转换时出现的溢出。

const            

标识一个可在编译时计算出来的变量值,即一经指派不可修改的值。

delegate       

指定一个声明为一种委托类型。委托把方法封装为可调用实体,能在委托实体中调用。

enum          

表示一个已命名常量群集的值类型。

event           

允许一个类或对象提供通知的成员,他必须是委托类型。

 

explicit         

一个定义用户自定义转换操作符的操作符,通常用来将内建类型转换为用户定义类型或反向操作。必须再转换时调用显示转换操作符。

extern        

标识一个将在外部(通常不是c#语言)实现的方法。

finally          

定义一个代码块,在程序控制离开try代码快后执行。参见try和catch。

 

fixed           

在一个代码块执行时,在固定内存位置为一个变量指派一个指针。

 

foreach        

用于遍历一个群集的元素。

goto            

一个跳转语句,将程序执行重定向到一个标签语句。

Implicit

一个操作符,定义一个用户定义的转换操作符。通常用来将预定义类型转换为用户定义类型或反向操作。隐式转换操作符必须在转换时使用。

interface     

将一个声明指定为接口类型,即实现类或构造必须遵循的合同。

internal       

一个访问修饰符。

namespace  

定义一个逻辑组的类型和命名空间。

operator      

用来声明或多载一个操作符。

out              

标识一个参数值会受影响的参数,但在传入方法时,该参数无需先初始化。

params

声明一个参数数组。如果使用,必须修改指定的最后一个参数。允许可选参数。

readonly       

标识一个变量的值在初始化后不可修改。

ref

标识一个参数值可能会受影响的参数。

sealed           

防止类型被派生,防止方法和property被覆载。

sizeof          

一个操作符,以byte为单位返回一个值类型的长度。

stackalloc   

返回在堆上分配的一个内存块的指针。

struct           

struct是一种值类型,可以声明常量、字段、方法、property、索引器、操作符、构造器和内嵌类型。

throw         

抛出一个异常。

try                         

异常处理代码块的组成部分之一。try代码块包括可能会抛出异常的代码。参阅catch和finally关键字。

typeof                   

一个操作符,返回传入参数的类型。

unchecked

禁止溢出检查。

unsafe 

标注包含指针操作的代码块、方法或类。

using                   

当用于命名空间时,using关键字允许访问该命名空间中的类型, 而无需指定其全名。也用于定义finalization操作的范围。

virtual                  

 一个方法修饰符,标识可被覆载的方法。

volatile                 

标识一个可被操作系统、某些硬件设备或并发线程修改的attribute。

 

sealed 修饰符表示密封用于类时,表示该类不能再被继承,不能和 abstract 同时使用,因为这两个修饰符在含义上互相排斥用于方法和属性时,表示该方法或属性不能再被继承,必须和 override 关键字一起使用,因为使用 sealed 修饰符的方法或属性肯定是基类中相应的虚成员通常用于实现第三方类库时不想被客户端继承,或用于没有必要再继承的类以防止滥用继承造成层次结构体系混乱恰当的利用 sealed 修饰符也可以提高一定的运行效率,因为不用考虑继承

abstract & virtual

abstract 修饰符可以和类、方法、属性、索引器及事件一起使用。

在类声明中使用 abstract 修饰符以指示类只能是其他类的基类。接下来描述了abstract的一些特性:不能实例化;可以包含抽象方法和抽象访问器;不能用 sealed 修饰符修改抽象类,意味着该类不能被继承;从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实现;

在方法或属性声明中使用 abstract 修饰符以指示此方法或属性不包含实现等等。"abstract"可以修饰类、方法、属性、索引器及事件

而看到virtual关键字的时候,产生了一个疑问:"virtual"关键字只能修饰方法和属性,却不能修饰类~但清楚记得老师讲C++的时候有一个概念,叫虚基类。难道c#把virtual的这个特性去掉了?然后我到google找答案~看到了两篇文章“c++虚基类”和“深入剖析c#继承机制”,终于明白了原来是由于这两者的继承机制不同而决定的。c++允许多重继承,而c#只允许派生类从一个类中继承,由于多重继承产生的二义性问题需要虚基类来解决,所以c++有虚基类的概念,而c#由于单继承的原因不会产生继承而带来的二义性问题,

所以不需要virtual关键修饰类。




原文地址:https://www.cnblogs.com/NewWork/p/3260550.html