在 C# 中,内部结构给出编译器警告

In C#, internal structs give compiler warnings

我有一个 C# class 库项目,它需要其中的结构,但不应该暴露给它之外的任何东西。因此,我使用 internal 关键字创建了一个结构,如下所示:

internal struct MessageInfo {
     internal bool IsSticky;
     internal bool IsImportant;
     internal int MessageID;
     internal int AuthorID;
     internal int Sort;
     internal string Title;
     internal string Body;
     internal DateTime DisplayFromDate;
     internal DateTime DisplayToDate;
};

这可以编译并运行良好,但是 Visual Studio 2013(最终,如果重要的话)会抛出编译器警告,例如:

warning CS0649: Field 'VNCM4.AjaxPages.MessageInfo.IsSticky' is never assigned to, and will always have its default value false

我发现如果我将 'internal' 关键字的所有实例更改为 'public',警告就会消失。但是,我宁愿不这样做,因为必须 public 只是为了抑制警告似乎很疯狂。

这是 Visual Studio 中的错误,还是我遗漏了什么?我已经尝试搜索这个确切的问题,但还没有找到任何相关内容。

预先感谢您的帮助!

如果结构是内部的,并且该值从未分配给整个程序集中的任何地方,那么编译器知道该值从未被使用过,并且可以显示警告你看。如果它是 public 那么引用这个的其他程序集(编译器当然不知道)有可能写入该结构的字段,所以即使这个程序集不写入它,警告也不会'申请。

编译器只能在 structinternal 时提供帮助并发出此警告。