【发布时间】:2015-01-16 21:49:08
【问题描述】:
我有一个 C# 类库项目,其中需要结构,但不应该暴露给它之外的任何东西。因此,我使用 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”,警告就会消失。但是,我宁愿不这样做,因为为了禁止警告而不得不公开它似乎很疯狂。
这是 Visual Studio 中的错误,还是我遗漏了什么?我已经尝试搜索这个确切的问题,但尚未找到任何内容。
提前感谢您的帮助!
【问题讨论】:
-
您是否曾经在项目中的任何位置分配过这些字段?
-
该类型与
struct无关。不仅可变结构是邪恶的,而且这种类型很明显不代表一个单一的逻辑值。毫无疑问应该是class。 -
除了@Servy 的评论之外,还有设计指南指出
struct should has an instance size under 16 bytes
标签: c# struct visual-studio-2013 compiler-warnings internal