2017-03-02 117 views
0

您能否解释我SuppressMessageAttribute是如何工作的?根据这msdn article我给出了一个意见,它在最终组装中做了一些事情。SuppressMessageAttribute是如何工作的?

让我们假设我们有以下方法:

[SuppressMessage("Microsoft.Performance", "CA1804:RemoveUnusedLocals", MessageId = "myUnusedLocalIntVariable")] 
     public override string ToString() 
     { 
      int myUnusedLocalIntVariable = 5; 

      return String.Format($"Name: {Name}, age: {Age.ToString()}."); 
     } 

我期望这一属性将从总装删除我没有使用的局部变量。所以我通过使用ildasm来查看组件。但是我发现我的未使用的局部变量。现在我不知道它是如何工作的?你能给我最简单的例子吗?

+1

当代码分析工具检查您的程序集时 - 它将看到此属性,并且如果否则会生成给定的消息。它不会改变程序集中的任何内容 - 代码分析仅用于纯粹的信息目的。 – Evk

回答

1

这(顾名思义)只是告诉编译器不显示警告
它不能修改代码

如果在释放模式一个编译器,如果可能删除编译它足够聪明,或者JIT编译器可能会在运行时执行它。
在任何情况下,该属性都不会影响该属性