有什么方法可以检查枚举中是否定义了对象值?
Is there any way of checking if an enum has an object value defined in it?
这是我定义的枚举:
enum LogicalChange
{
List = SyntaxKind.List,
TildeToken = SyntaxKind.TildeToken,
ExclamationToken = SyntaxKind.ExclamationToken,
DollarToken = SyntaxKind.DollarToken,
PercentToken = SyntaxKind.PercentToken,
CaretToken = SyntaxKind.CaretToken,
AmpersandToken = SyntaxKind.AmpersandToken,
AsteriskToken = SyntaxKind.AsteriskToken,
MinusToken = SyntaxKind.MinusToken,
PlusToken = SyntaxKind.PlusToken,
EqualsToken = SyntaxKind.EqualsToken
}
我有一组命令,只有在枚举 LogicalChange
.[=15= 中定义了 change.After.Parent.Kind()
(其中 returns 和 SyntaxKind
)时才应执行这些命令]
到目前为止我尝试过的是 -
Enum.IsDefined(typeof(LogicalChange), change.After.Parent.Kind())
但这会产生异常。我不想做字符串比较。还有其他方法可以实现吗?
这不是简单的名称或字符串比较,您需要将其转换为您要比较的枚举类型。这不应触发异常:
if (Enum.IsDefined(typeof(LogicalChange), (LogicalChange)change.After.Parent.Kind()))
{
}
IsDefined 方法允许您发送三种类型作为值:
- 自己的枚举类型
- 整数
- 字符串
因此您可以使用这些方式:
1. Enum.IsDefined(typeof(LogicalChange), (LogicalChange)change.After.Parent.Kind())
2. Enum.IsDefined(typeof(LogicalChange), (int)change.After.Parent.Kind())
3. Enum.IsDefined(typeof(LogicalChange), change.After.Parent.Kind().ToString())
- 注意:方法 3 对你来说是正确的,因为你在两个枚举中选择了相同的名称,但最好不要使用它。
这是我定义的枚举:
enum LogicalChange
{
List = SyntaxKind.List,
TildeToken = SyntaxKind.TildeToken,
ExclamationToken = SyntaxKind.ExclamationToken,
DollarToken = SyntaxKind.DollarToken,
PercentToken = SyntaxKind.PercentToken,
CaretToken = SyntaxKind.CaretToken,
AmpersandToken = SyntaxKind.AmpersandToken,
AsteriskToken = SyntaxKind.AsteriskToken,
MinusToken = SyntaxKind.MinusToken,
PlusToken = SyntaxKind.PlusToken,
EqualsToken = SyntaxKind.EqualsToken
}
我有一组命令,只有在枚举 LogicalChange
.[=15= 中定义了 change.After.Parent.Kind()
(其中 returns 和 SyntaxKind
)时才应执行这些命令]
到目前为止我尝试过的是 -
Enum.IsDefined(typeof(LogicalChange), change.After.Parent.Kind())
但这会产生异常。我不想做字符串比较。还有其他方法可以实现吗?
这不是简单的名称或字符串比较,您需要将其转换为您要比较的枚举类型。这不应触发异常:
if (Enum.IsDefined(typeof(LogicalChange), (LogicalChange)change.After.Parent.Kind()))
{
}
IsDefined 方法允许您发送三种类型作为值:
- 自己的枚举类型
- 整数
- 字符串
因此您可以使用这些方式:
1. Enum.IsDefined(typeof(LogicalChange), (LogicalChange)change.After.Parent.Kind())
2. Enum.IsDefined(typeof(LogicalChange), (int)change.After.Parent.Kind())
3. Enum.IsDefined(typeof(LogicalChange), change.After.Parent.Kind().ToString())
- 注意:方法 3 对你来说是正确的,因为你在两个枚举中选择了相同的名称,但最好不要使用它。