一周学会 C# (值的类型)
C# 才鸟( QQ:249178521 )
1. 整型
类型
|
位数
|
System.
|
与 CLS 兼容 ?
|
有无符号
---|---|---|---|---
sbyte
|
8
|
SByte
|
否
|
有
ushort
|
16
|
UInt16
|
否
|
无
uint
|
32
|
UInt32
|
否
|
无
ulong
|
64
|
UInt64
|
否
|
无
|
|
|
|
byte
|
8
|
Byte
|
是
|
无
short
|
16
|
Int16
|
是
|
有
int
|
32
|
Int32
|
是
|
有
long
|
64
|
Int64
|
是
|
有
有符号整形和字节型是属于“通用语言认证系统” (CLS) 的。而无符号整形不属于 CLS 。
你可以使用原始的类型关键字(如 int )或与之对应的别名(如 System.Int32 ),这两种方法都是可行的。但唯一例外的情况是:当你把类型名作为 .net framework 函数实参的时候,你只能使用 System.Int32 ,而不能使用 int 。例如,你必须这样调用: Type.GetType("System.Int32") ,而 Type.GetType("int") 语句是错误的。这是因为 int 只是 C# 中的关键字,而 .net framework 函数是设计成在所有的 .net 语言中都通用的。必须注意的是 byte 在 C# 中是无符号的。
注意: byte 和 sbyt 只有 8 位,因此它们不能作为数组的元素,因为数组元素的最小尺寸是 16 位( 2 字节)。
2. 基本操作符
括号
|
(x)
---|---
访问成员
|
x.y
函数调用
|
f(x)
访问数组(不是元素)
|
a[x]
自增
|
x++
自减
|
x--
调用构造函数
|
new
获得类名
|
typeof
获得尺寸
|
sizeof (不安全的)
数值检查
|
(un)checked
基本操作符具有最高的优先级。
new 只能在调用构造函数的时候使用,并且不能被用来重载。使用 new 来调用结构的构造函数会在栈 (stack) 中分配内存,而用 new 来调用类的构造函数会在堆 (heap) 中分配内存。在 C# 中,结构是值类型的,类是引用类型的。
sizeof 返回类或一个表达式的尺寸,但它只能用在标识为 unsafe 的代码块中。
checked 和 unchecked 操作符用来控制是否检查算术运算溢出。
3. 操作符的优先级别
基本操作符
|
见上表
---|---
一元操作符
|
** + - ! ~ ++x –-x (T)x **
乘和除
|
** * / % ** ** (取余数) **
加和减
|
** + - **
移位
|
** << >> **
关系
|
** < > <= >= ** ** is as **
相等
|
** == != **
位操作
|
& ** ^ ** | ( 注意:左边比右边级别高 )
布尔
|
** && || ?: ** ( 注意:左边比右边级别高 )
赋值
|
** = *= /= %= += -= ... **
所有的一元操作符都可以重载。
乘和除、加和减、移位、关系( is as 例外)、相等和位操作可以重载。
&& 和 || 只能使用 true/false 转换操作符时才 可以重载。
?: 和 = 不能 重载。
复合赋值操作符(如 *= /= )可以重载。