数据类型

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

数据类型数据类型C#把数据类型分为两种:值类型和引用类型。

值类型和引用类型值类型的变量直接指向存储的值,引用类型的变量指向值的引用。[理解:引用就像一个柜子的号码牌,可以顺藤摸瓜找到柜子。假如你再次对一个值类型的变量赋值,那么就会改变值,假如你再次对一个引用类型的变量赋值,那么就只是换了一个号码牌,指向了其他的柜子,对前一个柜子是不做修改的。]

这两种类型的数据存储在内存的不同地方,值类型数据存储在堆栈中,而引用类型的数据(值的引用)存储在托管堆上。

在使用的时候的区别inti=20;intj=i;

int定义整数类型的变量,整数类型属于值类型,j在赋值的时候复制了i的值,所以这会在内存的两个地方存储值20,如果改变其中一个,不会影响另外一个。

Apple a =newApple();

a.color="red";

Apple b=a;

b.color="green";

Apple是我们定义的苹果类型,我们用new Apple()创造了一个实际的苹果,并用引用类型的变量a指向了这个创造的苹果。

在第二行设定了苹果的颜色是红色。

在第三行我们添加了一个新变量,赋值了a这个引用类型的数据,所以b也是指向了a指向的那个苹果,并没有产生第二个苹果。

在第四行,我们修改b指向的苹果的颜色为绿色,这时候实际上查看a.color也会发现苹果的颜色是绿色了,因为始终就只有一个苹果呀。

Apple a =null;

这表示让一个苹果类型的变量不指向任何实际的苹果,如果你想使用这个变量a代表的实际的苹果,就会报错,因为没有东西呀,怎么能使用呢。值类型的变量就不可以赋值null,这是引用类型的专利。

当已经没有任何一个变量指向某个实例的时候,这个实例就不能被访问到了,CLR的垃圾收集器会定期找寻这样的实例,删除它们,把它们占用的内存返回给操作系统。

预定义数据类型C#有15个预定义类型,其中13个是值类型,两个是引用类型(string和object)

13个值类型中有8个整型:{分正负的:8位sbyte,16位short,32位int,64位long}{无符号的:8位byte,16位ushort,32位uint,64位ulong}。

13个值类型中有2个浮点类型:{float:32位单精度浮点数}{double:64位双精度浮点数}。

13个值类型中还有:{decimal:通常用于财务计算的128位高精度十进制表示法}{bool:用于包含布尔值true或false}{char:为了保存单个字符的值}。

值类型的赋值方法:

inti =1234;uintui =1234U;longl =1234L;longx =0x12ab;//用16进制赋值需添加0x前缀ulongul =1234UL;floatf =12.3Fdoubled =12.3;decimald =12.30M;boolb =true;charc ='A';charc ='\n';//转义符

2个预定义的引用类型:{object:根类型,面向对象概念}{string:字符串类型,但拥有许多值类型的特性,使它常被误认为值类型}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航