值类型和引用类型

在C#中数据类型分为值类型和引用类型,值类型例如:int、bool、long等,引用类型例如:string等。

从概念上,值类型和引用类型的区别是:值类型直接存储其值,而引用类型存储对值的引用。

这两种类型存储在内存中的不同位置,值类型存储在内存的堆栈中,引用类型存储在托管堆上。注意,区分某个类型是值类型还是引用类型,因为这种存储位置的不同会有不同的影响。例如,int是值类型,int i=20;int j=i;//这两个语句会在内存的两个地方存储20;

假设已经定义了一个类Vector,Vector是一个引用类型,他有一个int类型的成员变量Value;

Vector x,y;

x=new Vector();

x.Value=20;

y=x;

Console.WriteLine(y.Value);

y.Value=50;

Console.WriteLine(x.Value);

那么在控制台中会输出什么呢?

Vector只有一个对象,x、y为引用类型的变量,声明的这两个变量都指向该对象,所以,输出的值为20和50.

如果变量是一个引用,那么可以把其值设置为null,表示不引用任何对象。

如果将引用设置为null,那就不能对他调用任何非静态的成员函数或字段,这么做运行期间会抛出异常。

值类型是通过值复制来的。

大多数更复杂的C#数据类型,包括我们自己声明的类都是引用类型。

 

C#有15个预定义类型,其中13个是值类型,2格式引用类型(string和object);

C#支持8个预定义整数类型,如下表所示:

名称CTS类型说明范围
sbyteSystem.SByte8位有符号整数-128~127
shortSystem.Int1616位有符号整数-32768~32767
intSystem.Int3232位有符号整数-2147483648~2147483647
longSystem.Int6464位有符号整数-9223372036854775808~9223372036854775807
byteSystem.Byte8位无符号整数0~255
ushortSystem.UInt1616位无符号整数0~65535
uintSystem.UInt3232位无符号整数0~4294967295
ulongSystem.UInt6464位无符号整数0~18446744073709551615

浮点类型:

名称CTS类型说明位数范围(大致)
floatSystem。Single32位单精度浮点数7 
doubleSystem。Double64位双精度浮点数15/16 

 decimal类型

名称CTS类型说明位数
decimalSystem。Decimal128位高精度十进制数表示法28

bool类型:

名称CTS类型说明位数
boolSystem。Boolean表示true/falseNA

字符类型:

名称CTS类型
charSystem。Char表示一个16位的(Unicode)字符

预定义的引用类型:

名称CTS类型说明
objectSystem。Object根类型,CTS中的其他类型都是从他派生而来的(包括值类型)
stringSystem。StringUnicode字符串

 

转载于:https://www.cnblogs.com/jacksong/archive/2012/07/16/2593859.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值