所以,我正在研究Structs vs Classes.到目前为止,我知道以下内容:
当传递给另一个函数时,类可以直接修改数据.类比Struct使用更多内存.
结构可以传递给函数,但数据在函数内克隆,而不是修改原始数据.
因此,如果我使用类,我可以将数据传递给函数并直接从新函数修改类中的数据.
如果我使用结构,我可以将数据传递给一个函数,该函数生成要在函数中使用的数据的副本,但不会影响原始数据.
但是,如果我将Struct传递给具有Ref关键字的函数,则它会修改Struct中的原始数据.
考虑到这一点,使用Struct与Ref关键字或仅使用类之间的主要区别是什么?它纯粹与记忆有关吗?我一直在使用Structs,但我需要修改原始数据 - 如果最好使用Ref关键字传递Struct,或者将我的所有Structs更改为Classes,则尝试解决.
Eri*_*ert 10
这是一个非常令人困惑的问题.以下是一些可以帮助您做出决定的指南:
使用Struct与Ref关键字或仅使用类之间的主要区别是什么?
这是查看结构和类之间差异的错误方法.如果您通过ref传递结构以修改其字段,那么您可能做错了. 字段应该是私有的,结构应该是不可变的.
使用任何 ref参数和通过引用传递对象之间的主要区别在于前者是变量的别名,后者是对象的引用.我很遗憾这ref是C#设计团队选择该功能的语法,因为它令人困惑.你不应该认为它是传递参考.您应该将其视为变量的别名.在幕后它传递一个指向变量的托管指针是一个实现细节.别名行为是语义含义.