这是访问枚举的安全方法吗?
本文关键字:方法 安全 访问 枚举 | 更新日期: 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"
这没什么问题。可以通过类名访问类内部的嵌套枚举。
现在,也就是说,我更喜欢把我的枚举放在顶层,而不是嵌套在类中,但如果你想这样做,这是合适的语法。
以这种方式引用枚举是完全可以的——您不会因此得到空引用异常。