在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类型 说明 范围
sbyte System.SByte 8位有符号整数 -128~127
short System.Int16 16位有符号整数 -32768~32767
int System.Int32 32位有符号整数 -2147483648~2147483647
long System.Int64 64位有符号整数 -9223372036854775808~9223372036854775807
byte System.Byte 8位无符号整数 0~255
ushort System.UInt16 16位无符号整数 0~65535
uint System.UInt32 32位无符号整数 0~4294967295
ulong System.UInt64 64位无符号整数 0~18446744073709551615

浮点类型:

名称 CTS类型 说明 位数 范围(大致)
float System。Single 32位单精度浮点数 7  
double System。Double 64位双精度浮点数 15/16  

 decimal类型

名称 CTS类型 说明 位数
decimal System。Decimal 128位高精度十进制数表示法 28

bool类型:

名称 CTS类型 说明 位数
bool System。Boolean 表示true/false NA

字符类型:

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

预定义的引用类型:

名称 CTS类型 说明
object System。Object 根类型,CTS中的其他类型都是从他派生而来的(包括值类型)
string System。String Unicode字符串

 

posted on 2012-07-16 16:55  角立杰出  阅读(197)  评论(0)    收藏  举报

IT新闻: