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