值类型与引用类型
先上代码
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 }
运行结果为
出现这种情况是因为结构为值类型,类为引用类型
书里给出的解释是把对象赋给变量时,实际是把带有一个指针的变量赋给了该指针所指向的对象。
画一个我理解的图
结构是值类型,并不包含指针,所以,只是单纯的把第一个结构的所有信息复制到第二个结构中
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器