c#经典入门学习笔记-结构类型与对象的比较

本文通过一个简单的C#程序示例,展示了结构体(值类型)与类(引用类型)在赋值过程中的不同行为。结构体会进行深拷贝,而类则仅复制引用。

这个问题是非常有趣的问题,现在,我截取书的一段程序,通过结果来分析结构类型和对象的区别。

namespace aa{

class MyClass{ public int val; }

struct MyStruct{ public int val; }

class  program{

static void Main( string[] args){ MyClass objectA=new MyClass(); MyClass objectB=objectA; objectA=10;objectB=20;

MyStruct structA=new MyStruct(); MyStruct  structB=structA;MyStructA=30;MyStruct B=40;

最后一步,请4个值全部输出}

}

}

结果为:MyStructA=30;MyStructB=40;objectA=20;objectB=20

现在就有一个问题:objectA、B的值会相同,而MyStructA、B的值就不相同这是为什么呢?

对象是引用类型。在对象赋给变量时,实际上是把带有一个指针的变量赋给了该指针指向的对象。此时的两个变量中含有的指引是相同的。

而结构是值类型。其变量不包含指针,只是结构本身,于是执行了复制的操作。

wow,这么有趣的事情,而是躲在书上的一个边角,你是不是没有注意到呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值