值类型与引用类型

先上代码

复制代码
 1 class TestClass
 2 {
 3     public int val;
 4 }
 5 struct TestStruct
 6 {
 7     public int val;
 8 }
 9 
10 class Program
11 {
12     static void Main(string[] args)
13     {
14         TestClass testClass1 = new TestClass();
15         TestClass testClass2 = testClass1;
16         testClass1.val = 10;
17         testClass2.val = 20;
18 
19         TestStruct testStruct1 = new TestStruct();
20         TestStruct testStruct2 = testStruct1;
21         testStruct1.val = 30;
22         testStruct2.val = 40;
23 
24         WriteLine($"testClass1.val = {testClass1.val}");
25         WriteLine($"testClass2.val = {testClass2.val}");
26         WriteLine($"testStruct1.val = {testStruct1.val}");
27         WriteLine($"testStruct2.val = {testStruct2.val}");
28 
29         ReadKey();
30 
31     }
32 }
复制代码

运行结果为

出现这种情况是因为结构为值类型,类为引用类型

书里给出的解释是把对象赋给变量时,实际是把带有一个指针的变量赋给了该指针所指向的对象。

画一个我理解的图

结构是值类型,并不包含指针,所以,只是单纯的把第一个结构的所有信息复制到第二个结构中

 

posted @   邢韬  阅读(131)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
点击右上角即可分享
微信分享提示