C#的值类型和引用类型

作为面向对象的语言,C#中的数据类型是统一的,任何类型都是直接或间接地从object类型派生而来,任何类型的值都可以被当做对象。另外,C#是个强类型的安全语言,编译器要对所有变量的数据作严格的检查,保证存储在变量中的每个数值与变量类型一致。


根据在内存中存储位置的不同,C#中的数据类型可分为两类。


一、值类型

数据长度固定,存放于栈(Stack)上。值类型变量直接保存变量的值,一旦离开其定义的作用域,立即就会从内存中删除。每个值类型的变量都有自己的数据,因此对一个该变量的操作不会影响到其他变量。


C#的值类型是从System.ValueType类继承而来,包括简单类型、枚举类型、结构类型和可控类型。


1)简单类型:

(1)有符号整型:sbyte、 short、 int、 long

(2)无符号整型:byte、 ushort、 uint、 ulong

(3)Unicode字符型:char

(4)实数型:float、 double、 decimal

(5)布尔型:bool


C#简单类型

  类  型

  长   度

范 围

预定义结构类型

sbyte

8

-128 ~ 127

System.Sbyte

byte

8位

0 ~ 255

System.Byte

char

16位

U+0000 ~ U+ffffUnicode字符集中的字符)

System.Char

short

16位

-32,768 ~ 32,767

System.Int16

ushort

16位

0 ~ 65,535

System.Uint16

int

32位

-2,147,483,648 ~ 2,147,483,647

System.Int32

uint

32位

0 ~ 4,294,967,295

System.Uint32

long

64位

-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

System.Int64

ulong

64位

0 ~ 18,446,744,073,709,551,615

System.Uint64

float

32位

1.5 x 10e-45 ~ 3.4 x 10e38

System.Single

double

64位

5.0 x 10e-324 ~ 1.7 x 10e308

System.Double

decimal

128位

NA

System.Decimal

bool

NA

true/false

System.Boolean

 

2)枚举类型:

enum E{···}形式的用户自定义类型


3)结构类型:

struct S{···}形式的用户自定义类型


4)可空类型:

具有null值得值类型扩展,如int? 表示可为null的int类型



二、引用类型

数据长度可变,存放于堆(Heap)上。引用类型变量保存的是数据的引用地址,并一直保存在内存中,直到.NET垃圾回收器将它们销毁。不同引用类型的变量可能引用同一个对象,因此对一个引用类型变量的操作会影响到引用同一对象的另一个引用类型变量。

引用类型的变量通常被称为对象,对象的实例使用new关键字创建。C#中提供的引用类型包括:类、接口、数组、委托。


1)类类型:

(1)object:其他所有类型的基类

(2)string:Unicode字符串

(3)自定义类型:class C{···}形式的用户自定义类型


2)接口类型:

interface I{···}形式的用户自定义类型


3)数组类型:

一维和多维数组


4)委托类型:

delegate int D{···}形式的用户自定义类型








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值