已分配字段<fieldname>,但从不使用其值

时间:2018-05-01 19:27:55

标签: c# .net warnings

我正在编写以下形式的Web Api类:

public class PartController : ApiController
{
    private ILogService _logService;
    private IPartSerive _partService;
    private const string className = "My.Long.Full.ClassPath.PartController";

    ...

    [HttpGet]
    public Part GetPart(int partId)
    {
        _logService.Log(className, DateTime.Now, etc...);
        return _partService.GetPart(partId);
    }

}

为了保持我的代码可读性和简短性,我已经定义了一个传递给我的日志服务的常量字符串值。

但是,我收到编译器警告:

字段&#39; PartController.className&#39;已分配但其值从未使用过。

显然,我在这里使用了这个值。奇怪的是,在我的MVC课程中,我没有看到警告。

任何人都可以推荐针对此类情景的最佳做法来抑制这些警告吗?

3 个答案:

答案 0 :(得分:1)

有几种方法可以抑制警告。

首先,正如Jimenemex强调的那样,有

#pragma warning disable 0169
private const string className = "My.Long.Full.ClassPath.PartController";
#pragma warning restore 0169

还有一个suppression attribute,由于性能的原因,不建议在发布代码中进行大量抑制。

[SuppressMessage("Microsoft.Design", "CA1039:ListsAreStrongTyped")]

您还可以创建一个cs文件来保存抑制属性,然后创建具有属性属性的抑制

[module: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "MyNamespace")] 

答案 1 :(得分:1)

好的,找到了解决方案。出于某种原因,这是一个Visual Studio错误。可以通过重新启动Visual Studio来修复它。

答案 2 :(得分:0)

要取消警告,请在className声明周围添加此警告。这个list有一堆警告可以抑制那个是不是那个。警告编号也应位于警告旁边的输出窗口中。

#pragma warning disable 0169, 414, 0219 // I forgot which one it is.
private const string className = "My.Long.Full.ClassPath.PartController";
#pragma warning restore 0169, 414, 0219

我认为您也可以通过public来解决它,但我不确定。