标题: string s = new string("abc") ; // 创建了几个对象?
Person p = new Person( [打印本页] 作者: 错,谁的错丶 时间: 2012-5-29 11:04 标题: string s = new string("abc") ; // 创建了几个对象?
Person p = new Person( string s = new string("abc") ; // 创建了几个对象?
Person p = new Person("abc"); // 创建了几个对象?
今天看到了这样一题,回答的也不全对,求解。 作者: 错,谁的错丶 时间: 2012-5-29 11:05
各两个对象 是吗作者: 蒋春 时间: 2012-5-29 11:45
string 字符串是创建两个对象
person 是创建的一个对象作者: 朱亮辉 时间: 2012-5-29 12:11
都是两个对象,
string s = new string("abc") ; 和Person p = new Person("abc"); 都是简写的,为了代码的整洁而这样写的。
其实代码分为两个部分,
第一步是声明对象,string s;和Person p;
第二步是初始化对象s= new string("abc") ;和 p = new Person("abc");
所以都是两个对象,这个是很久以前的理解,希望高手拍砖!
作者: 牛景亮 时间: 2012-5-29 12:39
都是两个吧
string s = new string("abc") ;
"abc" s
Person p = new Person("abc");
"abc" p
不知道对不对
希望有高手详细解答。作者: G_Xiaotao 时间: 2012-5-29 13:35
各位一个对象!!嘿嘿 向高手学习!作者: 刘豪 时间: 2012-5-29 16:46
都是3个对象。
string s = new string("abc") ; 数据栈的s,new在托管堆产生一个,“abc”一个,共三个。
Person p = new Person("abc"); 同上。
作者: 聂玉林 时间: 2012-5-29 17:16
第一个是三个对象,第二个是二个对象作者: 刘豪 时间: 2012-5-29 18:42
string s = new string("abc") ;
这里s是一个对象,在托管堆中new了一个对象,"abc"是一个对象,所以共3个对象。
Person p = new Person("abc");
在这儿,p是一个Person类型的引用,不是对象,在托管堆中new了一个对象,"abc"是一个对象,所以共2个对象。
作者: 高宜 时间: 2012-5-31 00:36
可不可以这样理解
string 和Person都是一个类
均为引用类型,给一个引用类型赋值是将复制到一个对象的引用,对象还是同一个对象
声明时为局部引用类型,使用堆栈保存地址
new该对象时引用构造器在堆中创建一个新对象,然后初始化这个对象
p = new Person("abc");
p = new Person("abc");
只是把新实例的地址赋值给引用