首页 > C# > C#中的数据类型和类型转换
2021
08-23

C#中的数据类型和类型转换

C#中的数据类型

在C#中,变量分为值类型(Value types)、引用类型(Reference types)和指针类型(Pointer types)三种类型

C# 允许定义其他值类型的变量,比如 enum,也允许定义引用类型变量,比如 class

值类型(Value types)

值类型变量可以直接分配给一个值,直接包含数据,它们是从类System.ValueType中派生的

bool   ,布尔值,True或False,默认False
char   ,16位Unicode字符,U +0000到U +ffff,默认'\0'
decimal,128位精确的十进制值,28-29有效位数,默认0.0M

整数类型(默认值都为0):
byte  ,8位无符号, 0到255
sbyte ,8位有符号, -128到127
ushort,16位无符号,0到65535
short ,16位有符号,-32,768到32,767
uint  ,32位无符号,0到4294967295
int   ,32位有符号,-2147483648到2147483647
ulong ,64位无符号,0到18446744073709551615
long  ,64位有符号,-9223372036854775808到9223372036854775807,默认0L
数字后面的后缀(不区分大小写)可以表示数值的类型:L表示64位长整形,F表示32位单精度浮点数,D表示64位双精度浮点数,U表示无符号
12ul表示一个无符号的长整形12

浮点数类型:
float,32位单精度浮点型,-3.4E-38到+3.4E38,默认0.0F
double,64位双精度浮点型,(+/-)5.0 E-324到(+/-)1.7E308,默认0.0D

以上值类型可以通过sizeof(type)方法获取以字节为单位存储对象或类型的存储尺寸(位数除以8)

引用类型(Reference types)

引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用

引用类型指向的是一个内存位置。如果内存位置的数据是由一个变量改变的,其他变量会自动反映这种值的变化。

内置的引用类型有对象(Object)类型、动态(Dynamic)类型和字符串(String)类型

对象(Object)类型

是C#通用类型系统中所有数据类型的终极基类,是System.Object类的别名。
所以对象(Object)类型可以被分配任何其他类型的值。但是,在分配值之前需要先进行类型转换。
当一个值类型转换为对象类型时,称为装箱;当一个对象类型转换为值类型时,称为拆箱

动态(Dynamic)类型

可以存储任何类型的值在动态数据类型变量中,这些变量的类型检查是在运行时发生的。
动态类型与对象类型相似,但是对象类型变量的类型检查是在编译时发生的,而动态类型变量的类型检查是在运行时发生的

字符串(String)类型

允许给变量分配任何字符串值,是System.String类的别名,是从对象(Object)类型派生的。
String类型的值可以通过两种形式进行分配:引号("")和@引号(@"")
字符串的前面加@,称作"逐字字符串",会将转义字符(\)当作普通字符对待,如@"C:\Windows"等价于"C:\\Windows"

指针类型(Pointer types)

指针类型(Pointer types)是用来存储另一种类型的内存地址

通过type* identifier;来明指针类型,如int* demo;

C#中的类型转换

隐式类型转换:这些转换是C#默认的以安全方式进行的转换,不会导致数据丢失

显式类型转换:即强制类型转换。需要强制转换运算符"(type)变量",且会造成数据丢失

C#提供的内置类型转换方法

val.ToBoolean():转换为布尔型
val.ToByte():转换为字节类型
val.ToSbyte():转换为有符号字节类型
val.ToInt16():转换为16位整数类型
val.ToUInt16():转换为16位无符号整数类型
val.ToInt32():转换为32位整数类型
val.ToUInt32():转换为32位无符号整数类型
val.ToInt64():转换为64位整数类型
val.ToUInt64():转换为64位无符号整数类型
val.ToSingle():转换为小浮点数类型
val.ToDouble():转换为双精度浮点型
val.ToDecimal():转换为十进制类型(只能转换浮点型或整数类型)
val.ToChar():转换为单个Unicode字符类型
val.ToDateTime():转换为日期-时间结构(只能转换整数或字符串类型)
val.ToString():转换为字符串类型
val.ToType(type):转换为指定类型
最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。