关键字是预定义的保留标识符,对编译器有特殊意义。 除非前面有 @ 前缀,否则不能在程序中用作标识符。 例如,@if 是有效标识符,而 if 则不是,因为 if 是关键字。
| abstract | 用于创建抽象类。 |
| as | |
| base | 基类访问表达式由关键字base后面跟一个点和成员的名称组成。 |
| bool | |
| break | |
| byte | |
| case | |
| catch | |
| char | |
| checked | |
| class | |
| const | |
| continue | |
| decimal | |
| default | |
| delegate | |
| do | |
| double | |
| else | |
| event | |
| explicit | |
| extern | |
| false | |
| finally | |
| fixed | |
| float | |
| for | |
| foreach | |
| goto | |
| if | |
| implicit | |
| in | |
| int | |
| interface | 接口使用 interface 关键字声明,它与类的声明类似。 |
| internal | |
| is | |
| lock | |
| long | |
| namespace | |
| new | |
| null | |
| object | |
| operator | 重载运算符是具有特殊名称的函数,是通过关键字 operator 后跟运算符的符号来定义的。 |
| out | |
| override | |
| params | |
| private | |
| protected | |
| public | |
| readonly | |
| ref | |
| return | |
| sbyte | |
| sealed | 通过在类定义前面放置关键字 sealed,可以将类声明为密封类。当一个类被声明为 sealed 时,它不能被继承。抽象类不能被声明为 sealed。 |
| short | |
| sizeof | |
| stackalloc | |
| static | 把类成员定义为静态的。 |
| string | |
| struct | 用于创建结构体。 |
| switch | |
| this | |
| throw | |
| true | |
| try | |
| typeof | |
| uint | |
| ulong | |
| unchecked | |
| unsafe | |
| ushort | |
| using | using 关键字表明程序使用的是给定命名空间中的名称。 |
| virtual | |
| using | |
| virtual | 声明一个虚方法。 |
| void | |
| volatile | |
| while |
virtual和abstract都是用来修饰父类的,通过覆盖父类的定义,让子类重新定义。
- 1.virtual修饰的方法必须有实现(哪怕是仅仅添加一对大括号),而abstract修饰的方法一定不能实现。
- 2.virtual可以被子类重写,而abstract必须被子类重写。
- 3.如果类成员被abstract修饰,则该类前必须添加abstract,因为只有抽象类才可以有抽象方法。
- 4.无法创建abstract类的实例,只能被继承无法实例化。
抽象方法和虚方法的区别
- 1.虚方法必须有实现部分,抽象方法没有提供实现部分,抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化。
- 2.抽象方法只能在抽象类中声明,虚方法不是。如果类包含抽象方法,那么该类也是抽象的,也必须声明类是抽象的。
- 3.抽象方法必须在派生类中重写,这一点和接口类似,虚方法不需要再派生类中重写。
简单说,抽象方法是需要子类去实现的。虚方法是已经实现了的,可以被子类覆盖,也可以不覆盖,取决于需求。
抽象方法和虚方法都可以供派生类重写。
new关键字
接口中的new关键字:
- 接口成员不能有 new、static、abstract、override、virtual 修饰符。有一点要注意,当一个接口实现一个接口,这2个接口中有相同的方法时,可用 new 关键字隐藏父接口中的方法。
- 接口中只包含成员的签名,接口没有构造函数,所以不能直接使用 new 对接口进行实例化。
1484

被折叠的 条评论
为什么被折叠?



