c#struct 和class 的区别

天上飞猪 2018-09-05 03:13:01
看如下代码

class Program
{
private class Test {


private string a;

public string A
{
get { return a; }
set { a = value; }
}
}
static void Main(string[] args)
{
Test t1 = new Test();
t1.A = "1";
Test t2 = t1;

Console.WriteLine("T1的值是{0}", t1.A);
Console.WriteLine("T2的值是{0}", t2.A);
t2.A ="2";

Console.WriteLine("T1的值是{0}", t1.A);
Console.WriteLine("T2的值是{0}", t2.A);
}
}
以上代码输出为1 1 2 2
如果把class改为struct 输出为1 ,1,1,2
为什么class的时候 输出为 1 1 22 是因为同一个引用吗
...全文
496 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
天上飞猪 2018-09-06
  • 打赏
  • 举报
回复


谢谢大家!!!
lindexi_gd 2018-09-05
  • 打赏
  • 举报
回复
在参数传递使用 struct 可以复制一份,但是类不会。在使用 C# 7.2 可以使用新特性,不让参数的 struct 复制

千万不要认为 struct 是存放在栈,类存放在堆,只有jit才确定放在哪
threenewbee 2018-09-05
  • 打赏
  • 举报
回复
你自己已经总结出来了。
另外struct没有办法表示null。
游北亮 2018-09-05
  • 打赏
  • 举报
回复
一个是值类型,数据存储在栈里,Test t2 = t1 相当于内存拷贝
一个是引用类型,存储在堆里, Test t2 = t1 只是引用赋值
xuzuning 2018-09-05
  • 打赏
  • 举报
回复
是的

110,536

社区成员

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

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

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