我真的很想知道c#不允许赋值运算符重载的设计解释。我确信一定有一个超过有效的,我需要知道它。
答案实际上就在这里,这很有意义(谢谢乔恩):
.NET 是 CLR 跟踪对象引用的托管环境。如果我们这些普通的开发人员被允许重载赋值运算符,那么这个托管环境就会失去意义,因为我们可以对引用的赋值做任何我们想做的事情,从而给环境带来严重破坏。
如果您希望能够重载赋值运算符,请使用非托管环境(例如 C++)并对内存执行任何操作。尽可能多地泄漏它。但不在 .NET 中。
想一想;你为什么要这个?有什么好处?你想要值类型语义吗?好吧,然后使用结构,案例关闭。每个功能都有相关的成本。设计者一定觉得这个功能在实践中没有足够的用处,不值得实施。
这里的潜在问题远远超过任何感知到的好处。