Unity3d 为什么我的三元运算符对if-else给出不同的结果?

Unity3d 为什么我的三元运算符对if-else给出不同的结果?,unity3d,ternary-operator,game-development,Unity3d,Ternary Operator,Game Development,我遇到的问题是,对于较小的代码,我试图使用三元运算符而不是if-else,但在我的示例中使用它时,返回的结果与使用if-else时不同 问题代码如下 否则 if(string.IsNullOrEmpty(jn["LARM"].Value)) pm.ItemLeftArm = null; else pm.ItemLeftArm = jn["LARM"]; 三元 pm.ItemLeftArm = string.IsNullOrEmpt

我遇到的问题是,对于较小的代码,我试图使用三元运算符而不是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”,也可以是零,例如“0”

它以if-else的形式返回null,但返回从“”转换为0的jn对象


我不确定我为什么会遇到这个问题。

代码还可以,问题一定出在JSON中。您是否尝试将
jn[“LARM”].Value
记录在terniary运算符之前,以确保该值是否为null/empty


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

代码还可以,问题一定出在JSON中。您是否尝试将
jn[“LARM”].Value
记录在terniary运算符之前,以确保该值是否为null/empty


顺便说一句,为什么您要使用simpleJSON而不是新的Unity integrated JsonUtility?

很抱歉回复太晚,if语句返回true并将pm.ItemLeftArm设置为true,但替换为三元运算符返回false并将pm.ItemLeftArm设置为jn[“LARM”]。if和三元并没有区别,但它们给出的结果不同,我不知道为什么。我可以解决这个问题,但我只是想知道为什么会发生这种情况?今晚我完成工作后会打印一些打印输出,以跟踪可能出现的问题并发布它们抱歉回复太晚,if语句返回true并将pm.ItemLeftArm设置为true,但替换为三元运算符返回false并将pm.ItemLeftArm设置为jn[“LARM”]。if和Trialum没有区别,但它们给出不同的结果,我不确定为什么。我可以解决它,但我只是想知道为什么会发生这种情况?我今晚完成工作后会打印一些内容,以跟踪可能出现的问题并发布它们