是否可以对条件语句执行switch语句?

时间:2019-02-27 11:01:50

标签: c# switch-statement

我希望对条件值执行switch语句,目前我的语句如下:

switch (property)
  {
    case JToken token when (Schemas.IsNumericProperty(token)):
      return token.ToObject<int>();
    case JToken token when (Schemas.IsStringProperty(token)):
      return token.ToObject<string>();
    case JToken token when (Schemas.IsCollectionProperty(token)):
      return token.ToObject<string[]>();
    case JToken token when (Schemas.IsDependencyProperty(token)):
      return token.ToObject<KeyValue[]>();
    default:
      return property.ToObject<object>();
  }

但是属性值已经是JToken了,有没有办法将其清除为短代码?我知道我可以执行一系列if语句,这可能会更简洁,更有效?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我想您会这样搜索

JToken jToken = JToken.Parse("your json");

switch (jToken.Type)
{
     case JTokenType.Integer:
        return jToken.ToObject<int>();

     case JTokenType.String:
        return jToken.ToObject<string>();

     case JTokenType.Array:
        return jToken.ToObject<string[]>();

     default:
        return jToken.ToObject<object>();
}

JToken.Type的类型为JTokenType枚举,使您可以轻松识别令牌的类型。

您可以阅读有关JTokenType Enumeration

的更多信息