我一直在努力将.NET代码转换为Mono。除了这部分之外,一切都运行良好:
如您所见,value是int。Mono表示int是List<dynamic>(请查看b的值)。然后if语句进入else if部分,然后在第129行抛出异常,因为int不能强制转换为List。在.NET中,else if部分被正确评估为false。有人能帮忙吗?
以下是可复制的代码:)
如您所见,value是int。Mono表示int是List<dynamic>(请查看b的值)。然后if语句进入else if部分,然后在第129行抛出异常,因为int不能强制转换为List。在.NET中,else if部分被正确评估为false。有人能帮忙吗?
以下是可复制的代码:)
public static StringBuilder JsonValueToString(dynamic value, StringBuilder sb)
{
if (value is JsonObject)
{
return value.BuildString(sb);
}
else if (value is List<dynamic>)
{
var xs = (List<dynamic>) value;
sb.Append("[");
for (int i = 0; i < xs.Count; ++i)
{
if (i > 0) sb.Append(", ");
JsonValueToString(xs[i], sb);
}
sb.Append("]");
}
else
{
sb.Append(value.ToString());
sb.Append(" ");
}
return sb;
}
//编辑:添加了一张更好的图片。
//编辑2:添加了一个代码片段。
value as List<dynamic>
是否按预期工作? - Chrisdynamic
来完成你想要做的事情... 我只是建议你用简单的类型转换来替代它。但我猜你刚刚发现了 Mono 的一个 bug,因为你最初的方法本应该可以直接运行。 - Lucas Trzesniewskidynamic
关键字上。 - Filip Vondrášek