我的旧代码具有以下内容:
if (chgList != ABCHeader.ChangeListTypes.Always)
这是ABCHeader-它是一个类(不是变量),并且是一个非静态类:
public class ABCHeader
{
. . .
public enum ChangeListTypes
{
...
}
chgList是这样定义的:
private ABCHeader.ChangeListTypes chgList = ABCHeader.ChangeListTypes.Always;
这显然可以编译,但是在我看来,以这种方式引用此非静态类(ABCHeader)并不正确。当我在这段代码中的某个地方遇到一个奇怪的Null Reference Exception时,翻阅了我偶然发现的代码。这是潜在的问题,还是我肯定是在树错误的树上吠叫?
最佳答案
这只是嵌套类型。 class
(静态和非静态)或struct
可以在其中包含其他类型。句点.
是“静态成员”访问。这很像调用静态方法(例如ABCHeader.SomeMethod();
)的时间段。
这种时间段永远不会导致实例成员访问时间段的NullReferenceException
。
请注意,.NET Framework使用加号+
代替句点.
表示嵌套类型。例如:
string typeString = typeof(ABCHeader.ChangeListTypes).ToString();
// will contain a name including "ABCHeader+ChangeListTypes"