代码之家  ›  专栏  ›  技术社区  ›  Michael Puckett II

如何在添加自定义属性时删除CS0649编译器警告?

  •  3
  • Michael Puckett II  · 技术社区  · 7 年前

    目标: 在使用自定义属性时删除编译器警告“CS0649”(字段从未分配给)。

    我有一个自定义属性(下面的代码只是示例):

    [AttributeUsage(AttributeTargets.Field)]
    public class MyCustomAttribute : Attribute { }
    

    然后在字段上使用该属性:

    [MyCustom]
    private readonly SomeType someType;
    

    我的申请将自动填写 someType 有一个值,所以我们不必担心初始化它。

    在Visual Studio中,我仍然会在 某种类型 并且警告消息“Field”someType“从未被分配到,并且将始终具有默认值null。”

    有什么属性或其他方法可以添加到 MyCustomAttribute 这将删除此编译器警告?

    注意:我不想再修改字段或键入字段。我只想添加属性,警告就消失了。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Gabriel Luci    7 年前

    只有两种方法可以消除警告:

    1. 使用 #pragma warning disable / restore ,或
    2. 在“项目属性”->“生成”->中取消显示整个项目的警告,并将警告号置于“取消显示警告”中。

    但就是这样。

    但这就是为什么这是一个警告而不是一个错误。警告是用来标记可疑的东西,但很可能是合法的。从未在类本身中设置的字段是可疑的,但不一定是错误的。

    这个 #pragma 指令是消除它们的最好方法,因为它明确地表明您已经承认了警告并且认为它是没有根据的。