有可能在条件上做一个switch语句吗?

问题描述 投票:1回答:1

我期待在条件值上执行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陈述,这可能会更清洁,更有效率?

谢谢您的帮助!

c# switch-statement
1个回答
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 Enumeration,可让您轻松识别令牌的类型。

您可以阅读更多关于JTokenType Enumeration的信息

© www.soinside.com 2019 - 2024. All rights reserved.