我想将枚举作为 int 获取,但前提是它应用了初始化程序 - 这样我就知道该值是明确定义的,而不仅仅是默认值。这是因为我使用枚举来表示具有定义的 int 代码的映射。有没有办法用枚举做到这一点,或者我将不得不使用其他东西,比如字典?
这是一个示例 - 我有以下映射:
苹果 = 1,香蕉 = 2,梨 = 4,菠萝 = 7
我想确保如果枚举是
public enum Fruit
{
Apples,
Bananas,
Pears,
Pineapples
}
它不会尝试获取 int 值,因为枚举中的值 1 对应于香蕉,而不是苹果,就像它应该的那样。让我知道我是否需要更清楚。
更新:
我使用可为空的枚举来检查值是否已设置(或未知元素),但这不是我在这里要问的。我不认为我解释得很好,所以我会再试一次。
我希望能够得到一个我一无所知的枚举,获取底层的 int 然后用它做一些事情。我唯一关心的是枚举已初始化,因为它告诉我它上面定义了实际代码。我不介意它是否为空。这是我检查的事情之一。但如果它不为空,我想确保显式定义 int 代码。代码 0 是完全可以接受的——即使这意味着它是未定义的——只要这是原始映射指定的。
另一个更新:
我从Microsoft 文档中得到了“初始化”这个术语,我认为它会引起混淆。我的意思是一个枚举,它具有明确定义的底层整数的值。IE,
public enum MyEnum
{
One = 1,
Two = 2,
Three = 3
}
与没有的相反。IE,
public enum MyEnum
{
One,
Two,
Three
}
我认为这也引起了混淆,我将这些称为设置了默认值,这很容易与默认设置第一个元素的不可空枚举混淆。
我使用它的方式是我有一个方法,它使用反射来获取具有某些自定义属性的属性的值。出于我的目的,我只想从具有明确定义代码的枚举中获取值。否则我不能假设 int 值具有任何商业意义。