Visual Studio查找所有引用忽略var

时间:2017-04-21 10:58:23

标签: c# visual-studio visual-studio-2015

我想在visual studio中找到对某些类的所有引用,但忽略了使用var定义的实例。

有没有办法解决这个问题?

这里我使用SHIFT + F12来获取参考资料

SHIFT+F12

结果是:

enter image description here

但是在第1197行使用ReportWindow时: enter image description here

我得到了我想要的东西

enter image description here

1 个答案:

答案 0 :(得分:2)

此时,VS 2015、2017和2019的内置查找所有引用搜索以及Resharper的查找用法和< em>查找高级用法搜索选项。这也是预期的行为。

只有在您显式调用构造函数时,才在搜索结果中返回var引用。此外,当调用方法并将其返回到已明确声明为给定类型的变量时,该行还将在搜索结果中返回。

就个人而言,我仅在明显返回并分配给变量的情况下才使用var,通常仅在直接调用构造函数时才使用。在声明一个名称长且不方便的类时,这也很方便,避免了必须两次键入该类型

Dictionary<string, Ninja> trainees = new Dictionary<string, Ninja>();

以下是一个小程序的示例,该示例演示查找所有引用将在哪里找到结果,

using System;
​
namespace VarSearchTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var ninja = NinjaAcademy.Train();     // <---------- does not find (implicit)
            Ninja ninja2 = NinjaAcademy.Train();  // <---------- finds (explicit type declaration)
            var chrisFarley = new Ninja();        // <---------- finds (explicit constructor call)


            Console.WriteLine(ninja.Hide());
            Console.WriteLine(ninja2.Hide());
            Console.WriteLine(chrisFarley.Hide());
        }
    }
​
    public class Ninja  // <-------------------- Find all references/usages
    {
        public string Hide()
        {
            return "Puff of smoke...";
        }
    }
​
    public static class NinjaAcademy
    {
        public static Ninja Train()  // <---------------- finds (explicit return type)
        {
            return new Ninja();      // <------------------ finds (explicit constructor call)
        }
    }
}

您还可以跟踪this github issue,以防将来发生变化,因为容易找到隐式引用会很方便。同时,请考虑仅在明显情况下提供方便的情况下使用var