gpt4 book ai didi

c# - Visual Studio 查找所有引用忽略 var

转载 作者:行者123 更新时间:2023-12-03 17:05:28 24 4
gpt4 key购买 nike

我想在 Visual Studio 中找到对某个类的所有引用,但忽略了用 var 定义的实例。

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

这里我使用 SHIFT+F12 来获取引用

SHIFT+F12

结果是:

enter image description here

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

我得到我想要的

enter image description here

最佳答案

此时,VS 2015、2017 和 2019 对内置的 Find All References 搜索以及 Resharper 的 Find Usages 和 Find Usages Advanced 搜索选项具有此行为。这也是预期的行为。

唯一一次var当您显式调用构造函数时,将在搜索结果中返回引用。此外,当一个方法被调用并返回到已显式声明为给定类型的变量时,该行也将在搜索结果中返回。

我个人喜欢用var仅当返回并分配给变量的内容很明显时,通常仅当直接调用构造函数时。这在声明一个名称又长又不方便的类时也很方便,避免必须键入该类型两次:

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

下面是一个小程序的例子,演示了 Find All References 在哪里可以找到结果,哪里不能。
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仅在它在显式情况下提供便利的场景中。

关于c# - Visual Studio 查找所有引用忽略 var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43540966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com