我们曾在前面的课程中讨论过源代码,除了只拥有0和1的机器语言,其它诸如汇编语言、C语言、Java语言、C#语言等都是由一系列的关键字、标识符、运算符、括号等构成。运算符和各种括号在C#中定赋予了特定的含义,而关键字是指C# 编译器预定义的保留字。这些关键字是组成C#语言最重要的部分,程序员就不能将它们作为标识符使用。
比如下面的代码,namespace、internal 、class 就是C#的关键字,它们在C#语言中代表着不同的功能,而Helloworld、Person就是标识符。namespace 表示定义一个命名空间,class表示声明一个类型,internal表示这个类型的可见范围。
namespace Helloworld
{
internal class Person
{
}
}
虽然我们不能直接将关键字做为标识符使用,但是,通过在关键字前面增加@前缀符号,就可以变相使用它们做为标识符。另外,如果我们把C#的关键字全部学完,基本上C#就学会了90%。下面我们来看一下C#的关键字到底有哪些,在学习C#这门语言之前,先总览知识点,居高临下去学习。
C#的关键字分两种,一种是保留关键字,另一种是上下文关键字。像上面的namespace、internal 、class 都是保留关键字。有些关键字在代码的上下文中有特殊的意义,如 get 和 set,这些被称为上下文关键字(contextual keywords)。下面我们以字母顺序将它们一一阐述如下:
abstract:标识一个可以扩展但不能被实例化,具必须被实现的类或方法;
as:一个转换操作符,如果转化失败,就返回null;
base:用于访问被派生类或构造中得同名成员隐藏的基类成员;
bool:表示布尔值的简单类型;
break:用于从循环语句块或switch语句中退出的跳转语句;
byte:表示8位长度无符号整数的简单类型;
case:指定在switch语句中的一个标签。如果标签中指定的常量与switch表达式的值匹配,则与标签关联的语句就被执行;
catch:定义一个代码块,在特定类型异常抛出时,执行块内代码。参考try和finally;
char:表示16位Unicode字符的简单类型;
checked:既是操作符又是语句。确保编译器和运行时检查整数类型操作或转换时出现的溢出;
class:指明一个声明得类类型声明;
const:使用 const 关键字来声明某个常量字段或局部变量。 常量字段和常量局部变量不是变量并且不能修改;
continue:用于返回循环顶部的跳转语句;
decimal:表示128位高精度十进制数的简单类型;
default:在switch语句中,指定一组语句,如果前面没有匹配得case子句,就执行这些语句;
delegate:指定一个声明为一种委托类型。委托把方法封装为可调用实体,能在委托实体中调用;
do:一个条件语句,无论条件是否满足,都执行至少一次;
double:表示64位双精度浮点值得简单类型;
else:if条件语句的一部分,如果条件不为真则执行else后面的语句。
enum:表示一个已命名常量群集得值类型;
event:允许一个类或对象提供通知得成员,它必须是委托类型;
explicit:一个定义用户自定义转换操作符的操作符,通常用来将内建类型转换为用户定义类型或反向操作。必须在转换时调用显式转换操作符;
extern:标识一个将在外部(通常不是C#语言)实现的方法;
false:一个布尔字面值;
finally:定义一个代码块,在程序控制离开try代码块后执行。参见try和catch关键字;
fixed:在一个代码块执行时,在固定内存位置为一个变量指派一个指针;
float:表示32位单精度浮点值得简单类型;
for:定义一个循环语句,只要指定条件满足就继续执行;
foreach:用于遍历一个群集的元素;
goto:一个跳转语句,将程序执行重定向到一个标签语句;
if:一个条件语句,根据一个布尔表达式的值选择一个语句执行;
implicit:一个操作符,定义一个用户定义的转换操作符。通常用来将预定义类型转换为用户定义类型或反向操作。隐式转换操作符必须在转换时使用;
in:foreach语句遍历语法的一部分,被放在变量名与要遍历的群集之间;
int:表示32位带符号整数值的简单类型;
interface:将一个声明指定为接口类型,即实现类或构造必须遵循的合同;
internal:一个访问修饰符。内部代码元素只可由同一装配件内的其他类型访问。装配件可以是DDL或EXE文件;
is:比较两个对象类型得比较操作符;
lock:用在多线程程序中,为变量设置一个互斥锁(mutex);
long:表示64位带符号整数值的简单类型;
namespace:定义一个逻辑组的类型和命名空间;
new:用于调用构造器的操作符。同时,也是一个修饰符,用来隐藏而非重载拥有同样签名得一个继承方法;
null:表示引用类型中等同于0的字面值;
object:一个预定义引用类型,表示所有引用类型得终极基类。也是预定义类型System.Object的别名;
operator:用来声明或多载一个操作符;
out:标识一个参数值会受影响得参数,但在传入方法时,该参数无需先初始化;
override:一个修饰符,表明一个方法将覆载一个虚方法或抽象方法,或一个操作符将覆载基类中定义的同名操作符;
params:声明一个参数数组。如果使用,必须修改指定的最后一个参数。允许可选参数;
private:一个访问修饰符。私有成员只能在定义该成员得类型内部访问;
protected:一个访问修饰符。保护成员只能在定义该成员得类型或派生类型中的访问;
public:一个访问修饰符。公有成员可以在定义该成员得类或命名空间内外自由访问;
readonly:标识一个变量的值在初始化后不可修改;
ref:标识一个参数值可能会受影响的参数;
return:一个用于跳出方法的跳转语句。执行返回到方法调用者;
sbyte:表示8位带符号整数的简单类型;
sealed:防止类型被派生,防止方法和property被覆载;
short:表示16位带符号整数值的简单类型;
sizeof:一个操作符,以byte为单位返回一个值类型的长度;
stackalloc:返回在堆上分配的一个内存块的指针;
static:静态成员与它在其中被声明得类型相关联,而不是与类型得实体相关联;
string:一个表示Unicode字符串得预定义引用类型。是System.String预定义类型的别名;
struct:是一种值类型,可以声明常量、字段、方法、property、索引器、操作符、构造器和内嵌类型;
switch:一个选择语句,它执行与表达式匹配标签相关联的语句列表;
this:引用一个类型的当前实体;
throw:导致抛出一个异常;
true:一个布尔字面值;
try:异常处理代码块得组成部分之一。try代码块包括可能会抛出异常的代码。参阅catch和finally关键字;
typeof:一个操作符,返回传入参数的类型;
uint:表示32位无符号整数值的简单类型;
ulong:表示64位无符号整数值的简单类型;
unchecked:禁止溢出检查;
unsafe:标注包含指针操作得代码块、方法或类;
ushort:表示16位无符号整数值的简单类型;
using:当用于命名空间时,using关键字允许访问该命名空间中的类型,而无需指定其全名。也用于定义finalization操作的范围;
virtual:一个方法修饰符,标识可被覆载的方法;
void:无返回值方法的返回类型;
volatile:标识一个可被操作系统、某些硬件设备或并发线程修饰的attribute;
while:while条件语句根据条件执行一个语句零次或多次。do语句中的while部分指定循环中止条件。
保留关键字
上下文关键字
如果您现在还看不懂上面这些关键字,不要紧,我们会在后面的章节中将它们融入到C#的知识点详细讲解,姑且先将上面这些关键字作为一个学习目录吧
——重庆教主 2023年12月12日