在 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 那么引用这个的其他程序集(编译器当然不知道)有可能写入该结构的字段,所以即使这个程序集不写入它,警告也不会'申请。
编译器只能在 struct
为 internal
时提供帮助并发出此警告。
我有一个 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 那么引用这个的其他程序集(编译器当然不知道)有可能写入该结构的字段,所以即使这个程序集不写入它,警告也不会'申请。
编译器只能在 struct
为 internal
时提供帮助并发出此警告。