这里是我定义的枚举。
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中定义了change.After.Parent.Kind()
(返回SyntaxKind
)时,才应执行。
到目前为止,我尝试过的是-Enum.IsDefined(typeof(LogicalChange), change.After.Parent.Kind())
但这会产生异常。我不想做字符串比较。还有其他方法可以实现这一目标吗?
这不是简单的名称或字符串比较,您需要将其强制转换为要与之进行比较的Enum Type。这不应触发异常:
if (Enum.IsDefined(typeof(LogicalChange), (LogicalChange)change.After.Parent.Kind()))
{
}
IsDefined方法允许您发送三种类型作为值:
因此您可以通过以下方式使用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())