C#是一种多才多艺的语言,它可以让你自由地操作自己和现有的类。你可以重载运算符来使用+
和*
与自定义对象,并且你可以扩展现有对象以添加新的方法。但出于某种原因,C#不允许你将运算符重载作为现有类的扩展。这是为什么呢?是否有解决方法?如果我想为现有类编写运算符重载,那么应该只制作.Plus()
和.Times()
扩展方法吗?
C#是一种多才多艺的语言,它可以让你自由地操作自己和现有的类。你可以重载运算符来使用+
和*
与自定义对象,并且你可以扩展现有对象以添加新的方法。但出于某种原因,C#不允许你将运算符重载作为现有类的扩展。这是为什么呢?是否有解决方法?如果我想为现有类编写运算符重载,那么应该只制作.Plus()
和.Times()
扩展方法吗?
在评论中,OP特别提到了使用System.Drawing.PointF
。我以前用过的方法是,在像这样的密封类中,使用.NET源代码开发另一个类。我们将这个第二个类称为MyCustomPointF
。我可以为我的新类编写运算符。但我还要添加一个被称为隐式转换运算符,帮助编译器在需要时将我的类的实例转换回System.Drawing.PointF
实例(而无需调用外部转换函数)。它并不完美,但它是一个选项。