我想在visual studio中找到对某个类的所有引用,但用var定义的实例被忽略了。
有什么方法可以解决这个问题吗?
在这里,我使用SHIFT+F12来获取引用。
结果是。
我得到了我想要的东西
在这个时间点上,VS 2015、2017和2019都有这样的行为,对于内置的 查找所有参考资料 搜索,以及Resharper的。查找用途 和 查找用途 高级 搜索选项。这也是预期行为。
只有在 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)
}
}
}
您还可以跟踪 这个github问题 以防将来发生变化,因为这样可以方便地找到隐式引用。同时,可以考虑使用 var
只有在显性情况下提供方便的场景下,才会出现。