这是访问枚举的安全方法吗?

本文关键字:方法 安全 访问 枚举 | 更新日期: 2023-09-27 18:08:33

我的遗留代码是这样的:

if (chgList != ABCHeader.ChangeListTypes.Always)

这是ABCHeader -它是一个类(不是变量),并且是一个非静态类:

public class ABCHeader
{
    . . .
     public enum ChangeListTypes
     {
    ...
     }

chlist是这样定义的:

private ABCHeader.ChangeListTypes chgList = ABCHeader.ChangeListTypes.Always;

这显然可以编译,但对我来说,以这种方式引用这个非静态类(ABCHeader)似乎是不对的。因为我在这段代码的某个地方有一个奇怪的Null引用异常,通过查看代码我偶然发现了这一点。这是一个潜在的问题,还是我找错对象了?

这是访问枚举的安全方法吗?

这只是嵌套类型class(静态和非静态)或struct可以在其内部包含另一类型。周期.为"静态成员"访问。这很像调用静态方法时的情况,例如ABCHeader.SomeMethod();

这种周期永远不会像实例成员访问周期那样导致NullReferenceException

注意,. net框架使用+ +而不是句号.来表示嵌套类型。例如:

string typeString = typeof(ABCHeader.ChangeListTypes).ToString();
    // will contain a name including "ABCHeader+ChangeListTypes"

这没什么问题。可以通过类名访问类内部的嵌套枚举。

现在,也就是说,我更喜欢把我的枚举放在顶层,而不是嵌套在类中,但如果你想这样做,这是合适的语法。

以这种方式引用枚举是完全可以的——您不会因此得到空引用异常。