C#中的引用类型的疑问

SiriusGuo 2014-04-20 04:18:53
代码很简单
Q1.为什么Person b的值改变,会改变Person a的值呢?
Q2.有什么办法能让b自己拥有自己的内存区域?
Q3.同样是引用类型,为什么String不会影响?

public class Person
{
public string name { get; set; }
public int age { get; set; }
}


Person a= new Person();
a.age = 11;
a.name = "Tim";
Person b = new Person();
b = a;
b.name = "Jay";
Console.WriteLine(a.name);

string astr = "123";
string bstr = astr;
bstr = "456";
Console.WriteLine(astr);

Console.ReadKey();


...全文
106 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
黄大仙儿 2014-04-20
  • 打赏
  • 举报
回复
引用 2 楼 u012250099 的回复:
[quote=引用 1 楼 huang369509940 的回复:] Q1类=是直接引用赋值 b=a就是b指向了a Q3把一个字符串变量赋给另一个字符串时,会创建一个全新的String对象
so Q2?[/quote] 我记得应该有更好的办法。。没想起来。。最简单的就是。。 Person b = new Person(); b.Name=a.Name; b.age=a.age;
SiriusGuo 2014-04-20
  • 打赏
  • 举报
回复
引用 1 楼 huang369509940 的回复:
Q1类=是直接引用赋值 b=a就是b指向了a Q3把一个字符串变量赋给另一个字符串时,会创建一个全新的String对象
so Q2?
黄大仙儿 2014-04-20
  • 打赏
  • 举报
回复
Q1类=是直接引用赋值 b=a就是b指向了a Q3把一个字符串变量赋给另一个字符串时,会创建一个全新的String对象

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧