C# Visual studio检测未使用的返回

C# Visual studio检测未使用的返回,c#,visual-studio-2013,C#,Visual Studio 2013,我刚刚花了一个小时的大部分时间试图弄明白为什么有些代码看起来不起作用。我没有得到任何类型的编译错误,并且一直跟踪到调用函数而不处理返回值的错误。代码比下面的示例稍微复杂一些,因为Class1是不可变的,但它仍然说明了这个问题: public class Class1 { private int MyVal = 0; public int GetMyVal() { return MyVal; } } public void Tester(){

我刚刚花了一个小时的大部分时间试图弄明白为什么有些代码看起来不起作用。我没有得到任何类型的编译错误,并且一直跟踪到调用函数而不处理返回值的错误。代码比下面的示例稍微复杂一些,因为
Class1
是不可变的,但它仍然说明了这个问题:

public class Class1
{
    private int MyVal = 0;
    public int GetMyVal()
    {
        return MyVal;
    }
}

public void Tester(){
    Class1 Instance = new Class1();
    Instance.GetMyVal();
}
GetMyVal()
的函数调用在技术上是正确的,在技术上也是无用的。正如我所说,代码涉及更多,但这是核心问题

我有点惊讶VS 2013(网络版)没有突出这个问题,因为调用GetMyVal显然没有任何好处。我是否缺少一些开关来检测这类事情,或者这超出了Visual Studio可以完成的范围?

我怀疑是否有任何编辑器可以为您提供所需的内容

VS将告诉您是否有未引用的变量(至少对于Pro和Ultimate而言,2012/2013年未使用Web)。但是,在Class1的范围内,
private int MyVal
GetMyVal
函数中被引用,因此它不会被标记为未引用的属性

它通常可以捕获无用的代码片段,但我不明白您如何期望它说您以前初始化的引用的变量没有意义。它无法知道Class1中的属性不是您以后要使用/修改的内容

如果我误解了你的问题,请纠正我


旁注:如果你能想出一个方法让它实现你想要的,我可以建议你写一个插件吗?请记住,现有的诸如Resharper和FXCop之类的插件添加了大量的功能

您需要研究诸如FXCop或FXCop之类的东西。但是,这两个版本都可能需要VS 2013的完整版本。您是否希望VS分析您的代码并确保调用
GetMyVal
时没有副作用?我认为这超出了编译器应该做的范围。@MichaelPerrenoud谢谢你,我将看一看。值得一看JetBrains的Resharper,他们的工具确实发现了很多这样的约定,并在你编写代码时突出显示它们。(FxCop分析构建,以便稍后向您提供该信息。)(请注意,Resharper确实使用了一些资源,如果您在较旧的环境中工作,它最终会减慢VisualStudio的速度…)感谢您花时间回答。问题不在GetMyVal函数中,而是我调用了GetMyVal函数,该函数只返回一个值,我只是让返回的值进入以太。嗯,也许我的期望有点太高了……是的,我想你对常规VS的期望有点太高了:)(不管怎么说,现在,MS最近表现得非常积极,功能非常棒)。像Resharper这样的工具会提醒你这个问题。不幸/幸运的是,它不是一个免费的工具。非常感谢您的帮助-这也是我所期望的准确错误。:)我相信是时候掸掉钱包上的蜘蛛网了