.net Visual Studio警告规则未对未使用的变量发出警告

.net Visual Studio警告规则未对未使用的变量发出警告,.net,compiler-warnings,.net,Compiler Warnings,当我通过简单赋值声明一个变量和init时,我得到了一个预期的警告 static void Main(string[] args) { var a = 1; } 但如果我通过函数调用更改赋值,根本没有警告 static void Main(string[] args) { var a = func(); } static string func() { return "Good";

当我通过简单赋值声明一个变量和init时,我得到了一个预期的警告

    static void Main(string[] args)
    {
        var a = 1;
    }
但如果我通过函数调用更改赋值,根本没有警告

    static void Main(string[] args)
    {
        var a = func();
    }

    static string  func()
    {
        return "Good";
    }
在第二个示例中,从未使用变量a,我的问题是:


为什么Visual Studio不生成警告?我认为这是这个代码段上的一个潜在问题。

如果您刚刚收到更多/更好的警告,各种工具(例如SonarLint)将为您的第二个示例生成多个警告,包括您询问的示例。至于“为什么”,第二个表单允许您在
Main
的右括号上设置断点,点击断点后,查看
func
(通过
a
)返回的值。在这方面,第一个示例远没有那么有用,因为分配的值首先是在本地生成的。大多数情况下,我认为没有人会解释为什么会这样,除了设计者/作者。我想从作者或IDE警告设计者那里了解策略/pinciple/目的。