出现这个原因是值类型默认是按值传递的,返回的是栈上的一份临时的、本地的拷贝的值
因此即使能对它进行修改也无法反映到原来的值本身上,这是一个毫无何意义的操作,因此编译器就从源头上禁止了这样的操作。
解决办法:
1.改成class引用类型,这样,就成了一个对象(引用类型),就会返回在堆上的实际地址,修改也会反映到实际的对象
2.设置一个中间临时变量,然后再替换整个原来的struct值。这样实际上是替换整个struct。
本文解析了值类型默认按值传递的原因,及其为何无法直接修改原始值的问题。提供了两种解决方案:一是转换为引用类型,二是使用中间变量替换整个结构体。
出现这个原因是值类型默认是按值传递的,返回的是栈上的一份临时的、本地的拷贝的值
因此即使能对它进行修改也无法反映到原来的值本身上,这是一个毫无何意义的操作,因此编译器就从源头上禁止了这样的操作。
解决办法:
1.改成class引用类型,这样,就成了一个对象(引用类型),就会返回在堆上的实际地址,修改也会反映到实际的对象
2.设置一个中间临时变量,然后再替换整个原来的struct值。这样实际上是替换整个struct。
您可能感兴趣的与本文相关的镜像
Stable-Diffusion-3.5
Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率
882
267

被折叠的 条评论
为什么被折叠?