C#中关键字
在C#中,关键字是预定义的保留字,它们具有特殊的意义和用途,不能用作标识符(如变量名、类名等)。以下是一些常用的C#关键字:
-
访问修饰符:
-
public
:定义一个公共访问的成员。 -
private
:定义一个私有访问的成员。 -
protected
:定义一个受保护的成员。 -
internal
:定义一个在同一程序集内部可访问的成员。 -
protected internal
:定义一个在同一程序集或派生类中可访问的成员。 -
private protected
:定义一个在同一类及其派生类中可访问的成员。
-
-
类型:
-
bool
:布尔类型。 -
byte
:8位无符号整数。 -
sbyte
:8位有符号整数。 -
char
:16位Unicode字符。 -
decimal
:128位十进制浮点数。 -
double
:64位双精度浮点数。 -
float
:32位单精度浮点数。 -
int
:32位有符号整数。 -
uint
:32位无符号整数。 -
long
:64位有符号整数。 -
ulong
:64位无符号整数。 -
short
:16位有符号整数。 -
ushort
:16位无符号整数。 -
object
:表示任何类型的对象。
-
-
流程控制:
-
if
:条件语句。 -
else
:条件语句的否定分支。 -
switch
:多路分支语句。 -
case
:switch
语句中的一个分支。 -
default
:switch
语句中的默认分支。 -
while
:循环语句。 -
do
:while
循环的变体。 -
for
:基于索引的循环语句。 -
foreach
:用于遍历集合的循环语句。 -
break
:跳出循环。 -
continue
:跳过当前循环的剩余部分。 -
goto
:跳转到代码中的指定标签。 -
return
:从方法返回值。 -
throw
:抛出异常。 -
try
:开始异常处理块。 -
catch
:捕捉异常。 -
finally
:无论是否抛出异常都会执行的代码块。
-
-
类和对象:
-
class
:定义一个类。 -
struct
:定义一个结构体。 -
enum
:定义一个枚举类型。 -
interface
:定义一个接口。 -
namespace
:定义一个命名空间。
-
-
属性和索引器:
-
property
:定义一个属性。 -
indexer
:定义一个索引器。
-
-
方法和事件:
-
delegate
:定义一个委托。 -
event
:定义一个事件。
-
-
其他:
-
abstract
:声明一个抽象成员。 -
as
:执行安全的类型转换。 -
base
:引用基类成员。 -
const
:声明一个常量。 -
fixed
:固定内存中变量的位置。 -
stackalloc
:在栈上分配内存。 -
is
:类型检查操作符。 -
lock
:同步锁定。 -
out
:声明一个输出参数。 -
override
:覆盖基类中的虚方法。 -
params
:定义一个参数数组。 -
readonly
:声明一个只读字段。 -
sealed
:防止类或方法被继承。 -
sizeof
:获取类型的内存大小。 -
this
:引用当前对象。 -
typeof
:获取类型的System.Type
对象。 -
unchecked
:禁用溢出检查。 -
unsafe
:允许使用不安全代码。 -
using
:引入命名空间或实现IDisposable
接口的类型。
C#中的声明变量
在C#中,声明变量是为程序中的值分配存储空间和指定类型的过程。变量的声明通常包括三个部分:类型、名称和可选的初始值。以下是声明变量的基本语法:
类型 变量名;
或者在声明时初始化变量:
类型 变量名 = 初始值;
这里是一个具体的例子:
int myNumber; // 声明一个整数类型的变量 myNumber myNumber = 10; // 为变量 myNumber 赋值 string myString = "Hello, World!"; // 声明并初始化一个字符串类型的变量 myString bool isFinished = false; // 声明并初始化一个布尔类型的变量 isFinished
在C#中,变量的类型非常重要,因为它决定了变量可以存储的数据类型以及可以对变量执行的操作。C#是静态类型语言,这意味着每个变量在编译时必须有明确的类型。
以下是一些常用的数据类型和它们的声明示例:
-
数值类型:
-
int
:整数 -
double
:双精度浮点数 -
float
:单精度浮点数 -
decimal
:用于精确计算的小数 -
long
:长整数 -
byte
:无符号整数 -
short
:短整数 -
uint
:无符号整数 -
ulong
:无符号长整数 -
sbyte
:有符号整数(8位) -
ushort
:无符号短整数
-
-
字符和字符串:
-
char
:单个字符 -
string
:字符串(字符序列)
-
-
布尔类型:
-
bool
:布尔值(true
或false
)
-
-
引用类型:
-
object
:所有类的基类 -
List<T>
:泛型列表 -
Dictionary<TKey, TValue>
:泛型字典
-
-
可空类型:
-
int?
:可空的整数类型,可以存储int
或null
-
double?
:可空的双精度浮点数类型
-
-
结构体和类:
-
MyStruct
:用户定义的结构体 -
MyClass
:用户定义的类
-
在声明变量时,还可以使用
var
关键字来让编译器推断变量的类型,这在本地变量的声明中特别有用:var myVariable = 10; // 编译器推断 myVariable 为 int 类型
使用
var
时,变量的类型将根据初始化表达式的类型自动确定。这使得代码更加简洁,尤其是在变量类型很明显的情况下。但是,过度使用var
可能会降低代码的可读性 -
C#中的i++和++i以及i--和--i
在C#中,i++
和 ++i
以及 i--
和 --i
是递增和递减运算符的不同形式,它们用于修改变量的值。这些运算符通常用于循环和递增/递减变量的场景中。下面是它们的区别:
-
后缀递增(i++):
-
i++
被称为后缀递增运算符。 -
在表达式中,它会返回变量
i
的原始值,然后i
的值增加1。 -
通常用于循环中,当你需要在循环中使用变量的当前值,并且希望在操作后递增变量。
int i = 0; Console.WriteLine(i++); // 输出 0 Console.WriteLine(i); // 输出 1
-
-
前缀递增(++i):
-
++i
被称为前缀递增运算符。 -
在表达式中,它会先将变量
i
的值增加1,然后返回新值。 -
通常用于当你需要在操作前递增变量,并且使用递增后的值。
int i = 0; Console.WriteLine(++i); // 输出 1 Console.WriteLine(i); // 输出 1
-
-
后缀递减(i--):
-
i--
被称为后缀递减运算符。 -
在表达式中,它会返回变量
i
的原始值,然后i
的值减少1。 -
通常用于循环中,当你需要在循环中使用变量的当前值,并且希望在操作后递减变量。
int i = 0; Console.WriteLine(i--); // 输出 0 Console.WriteLine(i); // 输出 -1
-
-
前缀递减(--i):
-
--i
被称为前缀递减运算符。 -
在表达式中,它会先将变量
i
的值减少1,然后返回新值。 -
通常用于当你需要在操作前递减变量,并且使用递减后的值。
int i = 0; Console.WriteLine(--i); // 输出 -1 Console.WriteLine(i); // 输出 -1
-
C#中的除法和取余
在C#中,除法和取余是两种基本的算术运算符,用于处理数值类型的数据。
-
除法运算符 (
/
):-
用于将一个数除以另一个数。
-
结果是两个数相除后的商。
-
如果操作数是整数类型,结果也将是整数,且会向下取整(即舍去小数部分)。
-
如果操作数中至少有一个是浮点类型(
float
、double
、decimal
),结果将是浮点数。
int a = 10; int b = 3; int result = a / b; // 结果是 3 double c = 10.0; double d = 3.0; double resultF = c / d; // 结果是 3.3333333333333335
-
-
取余运算符 (
%
):-
用于计算两个数相除后的余数。
-
结果是除法运算后的余数。
-
同样,如果操作数是整数类型,结果也将是整数。
-
如果操作数是浮点类型,结果将是浮点数。
int a = 10; int b = 3; int remainder = a % b; // 结果是 1 double c = 10.0; double d = 3.0; double remainderF = c % d; // 结果是 1.0
-
在使用这些运算符时,需要注意以下几点:
-
除数不能为零,否则会引发
DivideByZeroException
异常。 -
在使用整数进行除法运算时,如果结果不是整数,则小数部分会被舍去,而不是四舍五入。
-
在使用浮点数进行除法运算时,结果将保留小数部分。
-
取余运算符在数学上有一些特殊的性质,例如
-5 % 3
的结果是1
,因为-5
除以3
的商是-2
,余数是1
。