一周学会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转换操作符时才可以重载。
?:和=不能重载。
复合赋值操作符(如*= /=)可以重载。