0

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

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

为什么'='不能在C#中重载?

4

2 回答 2

2

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

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

于 2012-01-17T22:48:29.853 回答
0

想一想;你为什么要这个?有什么好处?你想要值类型语义吗?好吧,然后使用结构,案例关闭。每个功能都有相关的成本。设计者一定觉得这个功能在实践中没有足够的用处,不值得实施。

这里的潜在问题远远超过任何感知到的好处。

于 2012-01-17T22:49:11.157 回答