【问题标题】:Why does my ternary operator give a different result to an if else?为什么我的三元运算符会给出与 if else 不同的结果?
【发布时间】:2017-11-04 19:10:48
【问题描述】:

我遇到的问题是我正在尝试使用三元运算符而不是 if else 来处理较小的代码,但是在我的情况下使用它时,它返回的结果与我使用 if else 时的结果不同。

问题代码如下;

如果是这样

if(string.IsNullOrEmpty(jn["LARM"].Value))
            pm.ItemLeftArm = null;
        else
            pm.ItemLeftArm = jn["LARM"];

三元

pm.ItemLeftArm = string.IsNullOrEmpty(jn["LARM"].Value) ? null : jn["LARM"];

jn["LARM"] 是来自 simpleJSON 的 json 节点,它可以是一个数字,例如“0”或什么都没有,例如“”。

它从if else返回null,但它返回从“”转换为0的jn对象。

我不知道为什么会遇到这个问题。

【问题讨论】:

    标签: unity3d ternary-operator game-development


    【解决方案1】:

    代码没问题,问题一定出在 JSON 中。您是否尝试在三元运算符之前记录 jn["LARM"].Value 以确保该值是否为空/空?

    顺便说一句,你为什么使用 simpleJSON 而不是新的 Unity 集成 JsonUtility?

    【讨论】:

    • 抱歉回复晚了,if 语句返回 true 并将 pm.ItemLeftArm 设置为 true,但替换为三元运算符返回 false 并将 pm.ItemLeftArm 设置为 jn["LARM"]。 if 和三元没有区别,但它们给出不同的结果,我不知道为什么。我可以解决它,但我只是想知道为什么会发生这种情况?
    • 今晚我会在完成工作后打印一些文件,以便追踪可能出现的问题并发布它们
    猜你喜欢
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 2014-06-16
    • 2023-01-13
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多