我需要一个c#的设计解释,不允许赋值运算符重载

时间:2012-01-17 22:45:10

标签: c# operator-overloading code-design

我真的想知道c#的设计解释,不允许赋值运算符重载。我相信必须有一个超过有效的,我需要知道它。

答案实际上就在这里,这很有意义(谢谢Jon):

Why can '=' not be overloaded in C#?

2 个答案:

答案 0 :(得分:2)

.NET是一个托管环境,CLR跟踪对象的引用。如果我们这些凡人开发人员被允许超载赋值运算符,那么这个托管环境就会失去意义,因为我们可以通过引用的分配来做任何我们想做的事情,从而给环境带来严重破坏。

如果您希望能够重载赋值运算符,请使用非托管环境(如C ++)并使用内存执行任何操作。尽可能多地泄漏它。不是在.NET中。

答案 1 :(得分:0)

考虑一下; 为什么你想要这个吗?有什么好处?你想要值类型语义吗?好吧,然后使用一个struct,case关闭。每个功能都有相关的成本。设计者必须认为这个特性在实践中不够有用,值得实施。

这里潜在的问题远远超过任何预期的好处。