"int i=1" "int i=new int() "和“String str = "a";” “String str = new String("a")”区别以及c#值类型和引用类型...

要想了解"int i=1" "int i=new int() "和“String str = "a";” “String str = new String("a")”区别,先要了解c#值类型和引用类型区别,以及c#对值类型和引用类型的处理。

值类型:整型、布尔型、字符型、实数型、结构型、枚举型。
引用类型:类、对象、字符串、数组、接口、委托。

注意字符是值类型,字符串是引用类型。

http://www.sosuo8.com/article/show.asp?id=2184讲的非常好

csdn这个帖子讨论的关于这个问题:http://bbs.csdn.net/topics/310247427

这个回答基本正确:

String str = "a"; 这个只是一个引用,内存中如果有“a"的话,str就指向它
String str = new String("a");是根据"a"这个String对象再次构造一个String对象,将新构造出来的String对象的引用赋给str 
int i = new int();完全等效于int i=0;,因为int的默认构造函数就是赋默认值0
而且值类型的默认构造函数是可以隐式调用
int a = 0和 int b= new int() 效果一样

说出了值类型和引用类型的本质区别,一个是在栈上,它的变量直接包含变量的实例,使用效率比较高。一个是在托管堆上,引用类型的变量通常包含一个指向实例的指针,变量通过该指针来引用实例。

posted on 2012-11-14 23:31  初学者心态 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/jinianjun/archive/2012/11/14/2770787.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值