c# - 如何使用隐式运算符方法获取 "Find Usages"?

标签 c# .net operators implicit

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

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

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

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

通常当你右键点击一个方法时,你可以在它上面使用“Find Usages”(或Alt+F7),这很有用,有没有类似的隐式操作符?

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

最佳答案

future 的编辑:当前版本的 Visual Studio 允许您在隐式运算符上右键单击“查找所有引用”。右键单击转换类型(本例中为Deal)或运算符符号(+-*/ 等)访问“查找所有引用”命令。所以下面的建议现在是 [Obsolete]


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

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

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

关于c# - 如何使用隐式运算符方法获取 "Find Usages"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10585594/

相关文章:

c# - Process.Start 未被识别

c# - 使用 Windows 函数制作窗口模态

c++ - 为指针实现转换运算符

c# - xml 命名空间 clr-命名空间中不存在标记 "xxx"。无法发布 WPF Visual C# 项目

c# - 在不实例化对象的情况下获取 PropertyInfo 的默认值?

c# - 测试这个有意义吗? (存储库模式)

c# - 在 C# 中为 IEnumerable 实现的 F# Seq 模块?

c# - VS2010 与 VS2008 中的字符串排序性能下降

c++ - 运算符重载以显示用户定义的数据类型

c++ - invoke_result with member (operator[]) 函数