永发信息网

c#的基础问题

答案:4  悬赏:80  手机版
解决时间 2021-04-04 20:12
class Myclass
{
public int cal;
}

class Class1
{
Myclass objectA=new Myclass();
Myclass objectB=objectA
objectA.val=10;
objectB.val=20;
}
提问1:为什么生成后OBJECTA和B都等于20?为什么不都是10,或者10和20,不是A=B吗?
提问2:为什么OBJECTB不需要实例化

谢谢西三227同学的回答,但是操作我NEW出来的对象不是objectA吗,而objectA赋值的是10呀,为什么结果确实objectB的20?
以上代码转自c#入门经典。。
最佳答案
我通俗(专业化的说法怕你不理解)的解释:
Myclass objectA=new Myclass();,objectA是你new出来的对象的地址,然后
Myclass objectB=objectA,则objectB接收了objectA的地址,所以他们两个变量都是同一个地址,都指向第一个new出来的对象。当你objectA.val=10;
objectB.val=20;时,实际上操作的都是你new出来那个对象,所以最终结果都是20
不知道这样讲你理解否

objectB这个变量的内容是一个“地址”,就是你new出来的对象的地址,所以无论你是对objectA还是对objectB操作,其实都是操作那个new出来的对象,也就是操作同一个对象。懂了吗?
全部回答
我也学的不深。不过还知道点这个问题的。 这个就是引用和值的区别! Myclass objectA=new Myclass(); 如上,当实例化一个类对象,并初始化后,会在堆中开辟一块内存,存放这个对象。 objectB=objectA 即把对objectA的引用赋给 objectB objectB 和 objectA 相当于一个人有两个不同的名子(比如一个大名,一个小名),着两个名字都指这一个人! 问题 1和 2 都应该明白了吧? 项彻底搞清楚的话,还是看书吧,吃透它!基础的东西,不能含糊!
(⊙o⊙)… 你声明了两个对象。按照你的理解,应该有两个实体。可是引用类型(对象)本身就不是实体,实体指的是在内存中活生生的站着茅坑的数据和方法。而new 一个类,则创建了一个这样的实体,然后将其地址(引用)赋给对象变量。 这个对象变量objectA,objectB仅仅保存这一个地址。而实体的数据和方法,在另一个地方存着呢。 如果这两个对象变量保存的是一个地址,我们就说他们引用了一个实体。任何以这两个变量为代理进行的对象更改,都将重叠在一个实体上。 这和值类型的变量是不同的。int a =2;int b=a;值变量的声明,即创建了一个实体,b=a的操作,是将一个实体复制给另一个实体的操作。所以值变量一般不允许不经赋值的使用——因为已经有了内存区域,不赋值的话谁也说不清里面到底是多少。(使用类似的Nullable语法,int允许变量为null)。 我不是理论型的选手,这样的解释可能漏洞很多,不过希望你能理解其中的意思,毕竟初学者先通过第一关才是关键的。
Myclass objectB=objectA 这句话是附值 "=" 号是赋值的意思哦..
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
求推荐一款手机台球游戏
打开车子电源后车子发出翁翁声音是怎么回事
He gave me the phone number in order cont
无创dna是否会漏诊唐氏儿
奥迪Q5和凯迪拉克XT5谁更可靠
不好意思的意思是什么,中超是什么意思?
hifi的发展方向是多声道还是2.0声道
合义堂茶道地址在什么地方,我要处理点事!
曹邺是哪个朝代的诗人,赵师秀是哪个朝代的诗
能层与电子层的关系
.粗外表,红帐棚,几里面包着白肉肉是啥东西
征文主题 奋发向上 崇尚美德 的文章选什么
毕业师生离别的诗句,求师生恋的小说,类似《
如图,AD∥BC,AD平分∠EAC,你能确定∠B与∠
三个人在赛马,下面是三个字,上中下,打一成语
推荐资讯
求歌词中含有从不想了断的粤语歌曲名字
在当代英国,国王、议会和内阁三者之间的关系
过滤海水的滤芯哪里生产
一元秒杀的东西,怎么样啊?是不是正品啊?
为什么反恐精英OL的分率调不回来
沈阳五十中学2015年中考成绩
隧道口的架子是做什么用?
飒漫画的歌曲
如果两个人在没有结婚证的情况下生了个小孩一
蘑菇长什么样子,蘑菇是什么样子的图片
怎么扫一扫查商品价格?
上个月大众金融逾期了几天就被报上征信,现在
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?