VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > python入门 >
  • c#教程值的类型

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.c#教程基本操作符
括号 (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转换操作符时才可以重载。
?:和=不能重载。
复合赋值操作符(如*= /=)可以重载。
4.连接
        规则
       除了赋值操作符外的其他二元操作符都是左连接的。
x+y+z   应理解为   x+y+z
        规则2
       赋值操作符和?: 操作符是右连接的。
x=y=z      应理解为   x=(y=z)
x+=y+=z   应理解为    x+=(y+=z)
a?b:c?d:e  应理解为   a?b:(c?d:e)
5.计算时的顺序
        操作数是严格地从左到右被计算的。
int m = 2;
int answer = ++m * ++m + ++m * ++m;
计算的顺序:
3 * ++m + ++m * ++m
3 * 4 + ++m * ++m
12 + ++m * ++m
12 + 5 * ++m
12 + 5 * 6
12 + 30
42
6.整数溢出
                    溢出错误
       un/checked ( 表达式 )
       un/checked{语句
int m = ...
Method(checked(m * 2));
m = checked(m * 2);
checked
{
    Method(m * 2);
    m *= 2;
}
 
以上的每一句语句都进行溢出错误检查
 
Method(m * 2);
m *= 2;
以上的每一句语句在用csc /checked+ *.cs编译时,进行溢出错误检查
以上的每一句语句在用csc /checked- *.cs编译时,不进行溢出错误检查
 
Method(unchecked(m * 2));
m = unchecked(m * 2);
unchecked
{
   Method(m * 2);
   m *= 2;
}
以上的每一句语句都不进行溢出错误检查
checked(表达式)检查一个表达式的结果是否溢出。它可以用于任何一个表达式,但只只能对整数操作符起作用,因为只有这些操作符才产生溢出。这些操作符是:++, --, -(负号),+ -(减号), * ,/ ,%以及整型之间的显式类型转换符。checked(表达式)的结果也是一个表达式,它可以被用来作为另一个表达式的一部分:
                     int outcome = checked( ... );
checked{语句}检查一系列的语句结果是否溢出。它不是一个表达式,没有结果。例如,下面有语句会产生错误:
                     int noOutcome = checked { ... };
(注意:checked(表达式)的括号是园括号,而checked{语句}的括号是花括号)。
unchecked是不检查是否溢出。
7.整数转换
      隐式转换,从小到大的转换
       不会丢失精度,不会抛出错误
       显式转换,从大到小的转换(强制转换)
       可能会丢失精度,可能会抛出错误
int m = int.MaxValue;//整数的最大值
short s;
checked { s = (short)m; }//显式转换,会抛出溢出错误
long n;
checked { s = m; }//隐式转换,不会抛出溢出错误
8.类型转换表
  sbyte short int long   byte ushort uint ulong
sbyte   I I I   E E E E
short E   I I   E E E E
int E E   I   E E E E
long E E E     E E E E
                   
byte E I I I     I I I
ushort E E I I   E   I I
uint E E E I   E E   I
ulong E E E E   E E E  
上表中,E表示显式转换,I表示隐式转换 。
9.浮点类型
类型 位数 System. 与CLS兼容? 后缀
float 32 Single F f
double 64 Double D d
C#默认的浮点类型是double,所以你要使用float型,就必须在数字后面加后缀F或f。
123.F是错误的,因为C#认为这会引起歧义。F究竟是123.这个浮点数的后缀还是123这个int类实例的函数?C#编译器认为这是个错误,因为int类没有F这个方法!
10.浮点数的操作符
  • 大部分的操作符和整数的一样
        取余% 是允许的(C/C++是不允许的)
        移位操作符是不允许的
  • 浮点数运算不会抛出错误
        很小的结果会转为0
        很大的结果会转为+/- Infinity
        无效的操作,结果会转为NaN
       只要有一个操作数是NaN,结果就转为NaN
11. 浮点数的转换
  c#教程float 转为 double
        隐式转换
        不会抛出错误
  • double转为float
       显式转换
       不会抛出错误
  • 整数 转为 浮点数
        隐式转换
        不会抛出错误
        会损失精度,但不会改变大小
  • 浮点数转为整数
        显式转换
        可能会抛出溢出错误
 

相关教程