C#类型
C#类型分为值类型和引用类型
值类型
值类型可以分为常量和变量也可以分为整型、浮点、布尔、字符、枚举、可空类型。
注意:也可以用var来声明变量类型,此时将由编译器来判断具体类型。
常量:编译器会将常量替换为对应数值。
整型
C#中支持9种整型,分别表示1、2、3、4、8字节的有符号数和无符号数以及char。
Sbyte:代表有符号的8位整数,数值范围从-128 ~ 127
Byte:代表无符号的8位整数,数值范围从0~255
Short:代表有符号的16位整数,范围从-32768 ~ 32767
ushort:代表有符号的16位整数,范围从0 到 65,535
Int:代表有符号的32位整数,范围从-2147483648 ~ 2147483648
uint:代表无符号的32位整数,范围从0 ~ 4294967295
Long:代表有符号的64位整数,范围从-9223372036854775808 ~ 9223372036854775808
Ulong:代表无符号的64位整数,范围从0 ~ 18446744073709551615。
char:代表无符号的16位整数,数值范围从0~65535。 Char类型的可能值对应于统一字符编码标准(Unicode)的字符集。(来自博客园)
1、由于小写字母容易和数字混淆,所以Uint、Long、Ulong类型的常量指定符一般都用大写字母。例如:long x=1234L;
2、给变量赋值时,既可以采用十进制的常数也可以采用十六进制的常数。 如果是十六进制常数,在程序中必须加前缀“0x”。例如: long a = 0x12ab; 该语句声明一个长整型变量a,并赋值为十六进制的数(12AB)由于二进制数都可以用十六进制数来直观地表示,所以不需要再提供二进制数的表示形式。
浮点型
1、浮点类型有:float、double、decimal 它们均属于值类型。
2、内部表示 在计算机内部的硬件实现中,浮点数分别使用“32位单精度”和“64位双精度”的IEEE 754标准格式来表示(浮点数的格式见计算机组成原理中的介绍)。
3、在C#中可以用下面的形式给浮点型变量赋值:
float x = 2.3f; //x的值为2.3,不加f后缀默认为double,会报错
double y = 2.7; //y的值为2.7
double z = 2.7E+23;
decimal x1 = 32.12345678901234m;
三者的区别:
1 float
1.1 包含其表示范围内的全部整数;
1.2 包含其表示范围内的部分小数(单精度)。
2 double
2.1 包含其表示范围内的全部整数;
2.2 包含其表示范围内的部分小数(双精度);
2.3 包含所有float;
2.4 比float范围大,精度高。
3 decimal
3.1 包含其表示范围内的全部整数;
3.2 包含其表示范围内的部分小数(十进制精度);
3.3 包含的小数集合与上述两者不同;
3.4 范围最小,精度最高,常用于金融。(来自优快云)
布尔型
布尔值就是一个比特的数据。但我们不叫他1和0,而叫他真和假。
他只有两个值,这两个值都是关键字。
在其他语言中,可能可以直接从数字1和0转化而来。但c#中不能这样转换,必须写成true或false。(优快云)
枚举
class P{
//定义的位置
public enum Mycolor{Red Yellow};
public enum Mycolor1:int {Red Yellow};
class Program
{
static void Main(string[] args)
{
//引用
Mycolor c=Mycolor.Red;
Console.WeiteLine(c);//结果为Red
Console.WeiteLine((int)c);
}
}
}
可空类型
可为 null 值类型 T?
表示其基础值类型T
的所有值及额外的 null 值。 例如,可以将以下三个值中的任意一个指定给 bool?
变量:true
、false
或 null,
基础值类型 T
本身不能是可为空的值类型。(Microsoft)
值类型和引用类型的区别
进行数据操作时,对于值类型,由于每个变量都有自己的值,因此对一个变量的操作通常不会影响其他变量。但是对于引用类型的变量,对一个变量的数据进行操作就是对这个变量的数据在堆中的数据进行操作很容易引发连锁反应。
运算符的种类
一元运算符:只有一个变量,如i++。
二元运算符:有两个变量,x+y。
三元运算符:只有一个三元运算符:var c=a>b?5:3表示如果a>b则c=5否则c=3。