c# -操作符重载扩展
本文关键字:扩展 重载 操作符 | 更新日期: 2023-09-27 18:03:36
c#是一门通用语言;它为您提供了很大的自由来操作自己的和现有的类。您可以重载操作符以使用自定义对象的+
和*
,并且您可以扩展现有对象以向它们添加新方法。但是由于某些原因,c#不允许将操作符重载作为现有类的扩展。为什么会这样?是否有解决方法,或者如果我想为现有类编写操作符重载,那么我应该只是使.Plus()
和.Times()
扩展方法?
三个选项:
- 子类化它们,并为子类 编写重载。
- 为各自的类使用微软公开可用的源代码(或反编译它们),并编写您的重载。从长远来看,这是不可维护的,也不一定容易,但它会起作用。 坚持你的扩展方法。
- 类和"克隆"类之间的转换操作符,如下所述。
System.Drawing.PointF
。我过去使用这样的密封类所做的是使用上面描述的。net源代码开发第二个类似的类。我们称这第二类为MyCustomPointF
。我可以为我的新类编写操作符。但是我还要添加的是所谓的隐式转换操作符,它可以帮助编译器在我需要时将类的实例转换回System.Drawing.PointF
实例(无需调用外部转换函数)。这不是完美的,但这是一个选择。