特征递归模式目前处于预览状态 Visual studio 2019

The feature recursive patterns is currently in preview Visual studio 2019

The feature recursive patterns is currently in preview, to use preview feature, please select preview version

switch (transactionRecieved)
{
   case TransactionType.TransactionName.ToString():
   break;
   case TransactionType.TransactionName1.ToString():
   break;
}

我没有使用任何新东西。这是一般情况,我们一直像这样将其用于 enum

TransactionType is a enum

我也看过这个 post 没觉得有用。SO Post

I need to use enum in swith statement and I am not able to use it. could anyone help me on that part

如果你问 "why doesn't this work"?我不确定你是否一直这样使用它,因为 case 需要一个常数值:

将您的字符串 transactionRecieved 解析为具有 Enum.ParseEnum.TryParse<T> 的 TransactionType 枚举,然后从您的案例中删除 ToString(),例如:

    var x = "Whatever";
    if(Enum.TryParse<TransactionType>(x, out xEnum)){
      switch(xEnum){
        case TransactionType.Whatever:
          break;
      }
    }

备注: * xEnum 在 if

范围内
  • Enum.IsDefined 可以与 Enum.Parse 结合使用(但我发现 tryparse 更整洁)