分 享

【凤凰社】常见数据类型

关于数据类型 c#的类型一般分为值类型和引用类型两种,

值类型的变量包含类型的实例,值类型存放栈中

引用类型的变量包含对类型实例的引用,引用类型放在堆中,在栈中设置一个指针指向堆

 

值类型:

1.整数型数值:所有的整型数值类型均为值类型,可以用文本进行初始化,每个整型类型的默认值都是0,c#支持以下预定义的整型数值类型

sbyte  8位带符号整数,

byte  8位无符号整数,

short  16位带符号整数

ushort 16位无符号整数

int 32位带符号整数

uint  32位无符号整数

long 64位带符号整数

ulong 64位无符号整数

2.浮点型数值:所有浮点型数值均为值类型 ,可以使用文本进行初始化,每个整型类型的默认值都是0,c#支持以下预定义的浮点型数值类型

float 大约6-9位数字  4个字节

double 大约15-17位数字  8个字节

decimal  大约28-29位数字  16个字节

3.bool类型,它是一个布尔值,可为true和false

4.char类型,默认值是\0,即U+0000

5.enum 枚举类型,它是由整型数值类型的一组命名常量定义的值类型,枚举成员的关联常数值为int,从0Start,并按定义文本顺序递增1

6.结构类型 (stuct type;stucture type)是一种可封装数据和相关功可以的值类型

7.可为空的值类型 ,T?表示其基础值类型T的所有值及额外的null 值。

引用类型:

1.内置引用类型

  1.1:动态类型 dynamic ,表示变量的使用和对其成员的引用绕过编译时类型检查

  1.2:对象类型 object,c#的统一类型系统中,所有的类型都是直接或间接从System.Object 继承的。

  1.3:字符串类型 string ,表示0个或多个Unicode字符的序列。

  1.4:委托类型 delegate 声明和方法签名相似

2.引用类型可以使用以下进行声明

  2.1: class

  2.2:Interface 

  2.3:可为null的引用类型

 

类型之间可以通过某种手段转换成另一种类型

类型转换分为

1.默认类型转换 无符号和有符号之间转换时,如果无符号的位数和有符号之间位数一致的话不可以默认转换,所有整型均可默认转换为decimal

  1.1 子类转换成父类时

  1.2 短精度向高精度转换时(列:byte->int->long->float->double)

2.强制类型转换  数据类型判断 关键字 is,此关键字可以检测下是否可以转换为目标类型,

  2.1 变量前加目标类型进行强制转换 失败时会抛错

  2.2 使用as 关键字进行强制转换  失败时会设置为null


0 评论

回复