我从来不喜欢隐式运算符(更喜欢扩展方法),因为在代码中发生强制转换/转换时很难直观地看到。
想象一下,如果您有如下示例:
public static implicit operator Deal(string dealAsXml)
{
//convert the xml into Deal object
}
上面的隐式运算符可以帮助您将 Xml 格式的交易转换/转换为 Deal 对象。
通常当你右键单击一个方法时,你可以在它上面使用“查找用法”(或Alt+F7),这非常有帮助,隐式运算符有类似的东西吗?
我认为这是尽可能使用扩展方法的另一个原因。
从未来进行编辑:当前版本的 Visual Studio 允许您右键单击隐式运算符上的“查找所有引用”。右键单击转换类型(Deal
在此示例中)或运算符符号(+
, -
, *
, /
等)以访问“查找所有引用”命令。所以现在下面的建议是[Obsolete]
也许像 Resharper 这样的东西可以做到这一点,但我不确定。当我需要查找用法时,我会采用穷人的方式,删除隐式运算符,重新编译并查找错误。
我想理论上,如果编译器可以使用不同的隐式运算符(或切换到方法的“对象”类型重载),那么它可能会错过这种情况,但它往往适合我的用法。我确信有更好的解决方案,但到目前为止它对我有用。
编辑:只是有一个想法并进行了测试。将隐式运算符标记为[Obsolete]
无论您在何处使用它,实际上都会导致编译器警告!我想这会捕获那些极端情况,其中存在其他有效重载,而您会错过完全删除隐式运算符的情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)