我有一个自定义类“错误”和一些预先创建的错误(我们称之为A,B和C)。现在我喜欢将这些预先创建的组合在一个组下(例如,“StockErrors”)并使用它们类似于枚举:
private void SomeFunction(Error NewError)
{
if (NewError == StockErrors.A) DoSomething(); // this is what I need.
}
我有什么想法可以做到这一点?这可能是非常简单的......
提前致谢!
答案 0 :(得分:4)
创建名为static
的{{1}}类,其中StockErrors
类型的public static readonly
字段已初始化为适当的值。 (您也可以使用属性)
根据您的Error
课程,您可能还需要覆盖Error
,==
,!=
和Equals
才能使用值语义。
答案 1 :(得分:1)
这样的事情:
public static class StockErrors
{
public static readonly Error A = new Error("A");
public static readonly Error B = new Error("B");
public static readonly Error C = new Error("B");
}
这是最简单的死亡声明,虽然它暴露了通常被视为不良形式的字段。为了使其更可接受,您可以将字段声明为private
,然后在public static
属性中公开它们。
此外,如果您的Error
类不能仅基于常量值构造,那么您需要在静态构造函数中初始化变量。下面是一个示例,其中值由属性公开并在静态构造函数中初始化:
public static class StockErrors
{
private static readonly Error a;
private static readonly Error b;
private static readonly Error c;
public static Error A { get { return a; } }
public static Error B { get { return b; } }
public static Error C { get { return c; } }
static StockErrors()
{
a = new Error(...);
b = new Error(...);
c = new Error(...);
}
}