8

我从不喜欢隐式运算符(更喜欢扩展方法),因为在代码中发生转换/转换时很难直观地看到。

想象一下,如果您有如下示例:

public static implicit operator Deal(string dealAsXml)
{
    //convert the xml into Deal object
}

上面的隐式运算符可帮助您将 Xml 格式的交易转换/转换为交易对象。

通常当你右键单击一个方法时,你可以在它上面使用“查找用法”(或 Alt+F7),这非常有用,隐式运算符有什么类似的吗?

我认为这是尽可能使用扩展方法的另一个原因。

4

1 回答 1

17

也许像 Resharper 这样的东西可以做到,但我不确定。当我需要查找用法时,我会按照穷人的方式进行操作并删除隐式运算符,重新编译并查找错误。

我想理论上编译器可能会错过一个案例,如果它可以使用不同的隐式运算符(或切换到方法的“对象”类型重载),但它往往适用于我的用法。我确信有更好的解决方案,但到目前为止它对我有用。

编辑:只是有一个想法并进行了测试。将隐式运算符标记为[Obsolete]实际上会在您使用它的任何地方导致编译器警告!我想这将捕获那些有其他有效重载的极端情况,你会错过完全删除隐式运算符。

于 2012-05-14T14:48:17.347 回答