C# 未找到预处理器IFs中的变量ReSharper

C# 未找到预处理器IFs中的变量ReSharper,c#,resharper,C#,Resharper,Resharper在这里说这两个字段都没有被使用。这是错误的,即取决于条件。我怎样才能避免这种情况 我搜索了类似的问题,找到了一些,但仍然没有理解如何解决这个问题。所以,即使这个问题是重复的,请至少告诉我如何准确地解决它。这只是Resharper试图提供帮助, (最初说的注释应该在#IF块附近,这是不正确的) 如果您在变量声明周围加上以下注释,那么它将告诉Resharper在分析此代码块时排除此测试 class a { private int num; private Person

Resharper在这里说这两个字段都没有被使用。这是错误的,即取决于条件。我怎样才能避免这种情况


我搜索了类似的问题,找到了一些,但仍然没有理解如何解决这个问题。所以,即使这个问题是重复的,请至少告诉我如何准确地解决它。

这只是Resharper试图提供帮助, (最初说的注释应该在#IF块附近,这是不正确的)

如果您在变量声明周围加上以下注释,那么它将告诉Resharper在分析此代码块时排除此测试

class a
{
   private int num;
   private Person p;
    ....
   public int SomeMethod()
  {
    #IF someCondition
     p = new Person();
     num = 2;
     p.Legs = num;
  } 
}

因为它不必每次进入代码>如果 >,如果条件< /代码>呢?@海姆770好的问题,我将从现在开始考虑这个方法。现在我不会因为太多的依赖性而改变任何东西(为了不搜索愚蠢的bug,我不想触摸东西等等)。无论如何,谢谢你的评论,我会考虑的!我的ReSharper 8通过在声明块周围加上:
#pragma warning disable 169
#pragma warning restore 169
来抑制警告。您将
#pragma
放在了错误的位置。你需要包装字段声明块,而不是它的用法。哦,是的,它起作用了。谢谢,伙计,我只是好奇为什么菲尼克斯的回答对我不起作用?我在那里也做错了什么吗?@VentsislavMarinov,这可能只是一个更尖锐的版本问题,它不起作用。这就是resharper放在我的快速测试块中用来禁用警告的代码。Haim770是正确的,它应该围绕变量的声明,而不是If条件。@Pheonx您使用的是什么版本?
// ReSharper disable UnusedVariable.Compiler
        private int num;
        private Person p;
// ReSharper restore UnusedVariable.Compiler