天天看点

2.6 C#的常用关键字和预定义类型

作者:万亿神帝的梦

C#的常用关键字和预定义类型

C#是一种强类型的面向对象的编程语言,它提供了一些关键字和预定义类型来帮助开发者编写高效、可读和安全的代码。本文将介绍C#中的一些常用的关键字和预定义类型,以及它们的作用和用法。

关键字

关键字是预定义的保留标识符,对编译器有特殊意义。除非前面有@前缀,否则不能在程序中用作标识符。例如,@if是有效标识符,而if则不是,因为if是关键字1。

C#中有两种类型的关键字:一般关键字和上下文关键字。一般关键字是C#程序任意部分中的保留标识符,上下文关键字仅在一部分程序上下文中有特殊含义,可以在相应上下文范围之外用作标识符1。

一般关键字

以下是C#中的一般关键字1:

关键字 说明
abstract 用于声明抽象类或抽象成员
as 用于执行引用类型或可空类型的安全转换
base 用于访问基类的成员
bool 用于声明布尔值类型
break 用于终止循环或switch语句
byte 用于声明8位无符号整数类型
case 用于标记switch语句中的分支
catch 用于捕获异常
char 用于声明16位Unicode字符类型
checked 用于启用整数算术运算和转换的溢出检查
class 用于声明类
const 用于声明常量
continue 用于跳过循环的当前迭代
decimal 用于声明128位精确十进制值类型
default 用于指定switch语句中的默认分支或指定泛型参数的默认约束
delegate 用于声明委托类型
do 用于声明后测试循环语句
double 用于声明64位浮点值类型
else 用于指定if语句中的备选分支
enum 用于声明枚举类型
event 用于声明事件
explicit 用于声明用户定义的显式转换运算符或指定泛型参数的显式约束
extern 用于声明外部方法
false 用于表示布尔值false
finally 用于指定无论是否发生异常都要执行的代码块
fixed 用于防止指针移动或修改被固定变量所引用的对象
float 用于声明32位浮点值类型,也称为单精度浮点类型
for 用于声明前测试计数循环语句
foreach 用于声明遍历集合中每个元素的循环语句
goto 用于无条件转移到程序中指定位置的语句
if 用于声明条件语句
implicit 用于声明用户定义的隐式转换运算符或指定泛型参数的隐式约束
in 用于指定泛型参数是逆变的、foreach语句中集合元素的别名或查询表达式
关键字 说明
int 用于声明32位有符号整数类型
interface 用于声明接口
internal 用于指定类型或成员的可访问性为当前程序集内部
is 用于检查对象是否与给定类型兼容
lock 用于获取给定对象的互斥锁,以便同步多线程访问
long 用于声明64位有符号整数类型
namespace 用于声明命名空间
new 用于创建对象或委托的实例,或指定泛型参数的新约束
null 用于表示空引用或可空值类型的无值状态
object 用于声明通用引用类型,是所有类型的基类
operator 用于声明用户定义的运算符
out 用于指定参数是按引用传递的、泛型参数是协变的或查询表达式的返回值
override 用于修改虚方法、属性、索引器或事件的实现
params 用于指定方法参数可以接受可变数量的实参
private 用于指定类型或成员的可访问性为当前类或结构内部
protected 用于指定类型或成员的可访问性为当前类或结构及其派生类内部
public 用于指定类型或成员的可访问性为任何位置
readonly 用于声明只读字段或只读属性
ref 用于指定参数是按引用传递的、返回值是按引用返回的或只读引用局部变量
return 用于从方法返回值或结束方法执行
sbyte 用于声明8位有符号整数类型
sealed 用于防止类被继承或虚成员被重写
short 用于声明16位有符号整数类型
sizeof 用于获取值类型占用的字节数
stackalloc 用于在堆栈上分配内存块
static 用于声明静态类或静态成员
关键字 说明
string 用于声明字符串类型,表示Unicode字符序列
struct 用于声明结构类型,表示值类型
switch 用于选择多个分支中的一个执行
this 用于引用当前实例或扩展方法中的第一个参数
throw 用于引发异常或重新引发当前异常
true 用于表示布尔值true
try 用于定义可能发生异常的代码块和处理异常的代码块
typeof 用于获取表示类型的Type对象
uint 用于声明32位无符号整数类型
ulong 用于声明64位无符号整数类型
unchecked 用于禁用整数算术运算和转换的溢出检查
unsafe 用于声明不安全的上下文,可以使用指针
ushort 用于声明16位无符号整数类型
using 用于引入命名空间或类型的别名,或指定可释放对象的范围
virtual 用于声明虚方法、属性、索引器或事件,可以在派生类中重写
void 用于指定方法不返回值或指定指针指向未指定类型的内存
volatile 用于声明字段可以由多个线程同时修改
while 用于声明前测试条件循环语句

上下文关键字

以下是C#中的上下文关键字:

关键字 说明
add 用于自定义事件的访问器
alias 用于在extern别名中引入外部程序集
and 用于在模式匹配中表示逻辑与操作
ascending 用于在查询表达式中指定升序排序
args 用于在lambda表达式中表示参数列表
async 用于声明异步方法或lambda表达式
await 用于等待异步任务完成并提取结果
by 用于在查询表达式中指定分组依据或排序依据
descending 用于在查询表达式中指定降序排序
dynamic 用于声明动态类型,表示运行时确定类型
equals 用于在查询表达式中指定相等比较
from 用于在查询表达式中指定数据源和范围变量
get 用于自定义属性或索引器的访问器
global 用于访问全局命名空间,避免与局部命名空间冲突
group 用于在查询表达式中指定分组操作
init 用于自定义属性或索引器的初始化器,只能在对象初始化期间赋值一次
into 用于在查询表达式中创建临时范围变量或执行连接操作
关键字 说明
join 用于在查询表达式中指定连接操作
let 用于在查询表达式中引入新的范围变量
managed 用于指定函数指针调用约定为托管的
nameof 用于获取标识符的名称
nint 用于声明本机大小的有符号整数类型
not 用于在模式匹配中表示逻辑非操作
notnull 用于在模式匹配中表示非空约束
nuint 用于声明本机大小的无符号整数类型
on 用于在查询表达式中指定连接条件
or 用于在模式匹配中表示逻辑或操作
orderby 用于在查询表达式中指定排序操作
partial 用于声明部分类或部分方法,可以在多个文件中定义
record 用于声明记录类型,表示不可变的值类型
remove 用于自定义事件的访问器
select 用于在查询表达式中指定投影操作
set 用于自定义属性或索引器的访问器
unmanaged 用于指定函数指针调用约定为非托管的或泛型参数的非托管约束
value 用于表示属性或索引器的值或匿名函数的返回值
var 用于声明隐式类型的局部变量或范围变量
when 用于在switch语句中指定筛选条件或在catch子句中指定异常筛选器
where 用于在查询表达式中指定过滤条件或泛型参数的约束条件
with 用于创建记录类型的副本并修改部分属性值
yield 用于从迭代器方法返回值

预定义类型

C#提供了一些预定义类型,它们是.NET库中的类型的别名,可以直接使用而无需引入命名空间。以下是C#中的预定义类型:

值类型

值类型是直接存储数据的类型,而不是存储对数据的引用。值类型包括以下几种:

  • 整型数值类型:表示整数,有符号和无符号,不同的位数。例如:int, long, byte, uint等。
  • 浮点数值类型:表示小数,有不同的精度和范围。例如:float, double, decimal等。
  • 布尔类型:表示真或假,只有两个可能的值。例如:bool。
  • 字符类型:表示单个Unicode字符,使用单引号括起来。例如:char。
  • 枚举类型:表示一组命名的常数,可以使用enum关键字定义。例如:enum Color { Red, Green, Blue }。
  • 结构类型:表示自定义的值类型,可以包含多个字段和方法,可以使用struct关键字定义。例如:struct Point { public int X; public int Y; }。
  • 元组类型:表示一组有限数量的有序元素,可以使用圆括号和逗号分隔元素定义。例如:(int, string) t = (1, “hello”)。

引用类型

引用类型是存储对数据的引用(地址)的类型,而不是直接存储数据。引用类型包括以下几种:

  • 对象类型:表示任何类型的数据,是所有类型的基类,可以使用object关键字或System.Object类名表示。例如:object o = “hello”。
  • 字符串类型:表示Unicode字符序列,是不可变的引用类型,可以使用string关键字或System.String类名表示。例如:string s = “hello”。
  • 委托类型:表示对具有特定参数列表和返回类型的方法的引用,可以使用delegate关键字或System.Delegate类名表示。例如:delegate void Action();。
    • 动态类型:表示在运行时确定类型的数据,可以使用dynamic关键字或System.Object类名表示。例如:dynamic d = 1; d = “hello”。
    • 接口类型:表示一组抽象的成员,可以由其他类型实现,可以使用interface关键字定义。例如:interface IDisposable { void Dispose(); }。
    • 数组类型:表示一维或多维的同类型元素的集合,可以使用方括号和逗号分隔维度定义。例如:int[] a = new int[10]; int[,] b = new int[3, 4];。
    • 集合类型:表示一组不同类型的元素的集合,可以使用泛型或非泛型的类或接口表示。例如:List<int> list = new List<int>(); ArrayList array = new ArrayList();。
    • 类类型:表示自定义的引用类型,可以包含多个字段、属性、方法、事件等,可以使用class关键字定义。例如:class Person { public string Name { get; set; } public int Age { get; set; } }。
    • 记录类型:表示不可变的引用类型,可以包含多个字段、属性、方法等,可以使用record关键字定义。例如:record Student (string Name, int Age);。

总结

本文介绍了C#中的一些常用的关键字和预定义类型,以及它们的作用和用法。关键字是编译器识别的保留标识符,预定义类型是.NET库中的类型的别名。了解这些关键字和预定义类型有助于编写高效、可读和安全的C#代码。

上一篇: 第1次作业,