存在从'float'和'float'以及从'float'到'float'的隐式转换

时间:2013-01-16 18:07:25

标签: c# compiler-errors unity3d

可能是我在一段时间内得到的最好的错误信息,我很好奇出了什么问题。

原始代码

float currElbowAngle = LeftArm ? Elbow.transform.localRotation.eulerAngles.y 
                               : 360f - Elbow.transform.localRotation.eulerAngles.y

我正在使用Unity3d和C#; LeftArm是bool类型,根据documentation Elbow.transform.localRotation.eulerAngles.y返回float值。

此代码给出了错误:

  

存在来自'float'和'float'的隐式转换   从'float'到'float'

这解决了它:

float currElbowAngle = LeftArm ? (float) Elbow.transform.localRotation.eulerAngles.y 
                               : 360f - Elbow.transform.localRotation.eulerAngles.y

所以我的问题是:尝试沟通的错误是什么,实际上出了什么问题?

更新1: Elbow是GameObject,此错误发生在Visual Studio中

1 个答案:

答案 0 :(得分:2)

对于类型系统,三元(e?a:b)运算符稍微复杂一些,因为双方都需要提供相同的返回类型。如果那里有一个微妙的错误,我不会感到惊讶。很快,编制者会让我们偶尔发笑。

这也可能解决了这个问题:

float currElbowAngle = LeftArm ? 0.0f + Elbow.transform.localRotation.eulerAngles.y 
                               : 360f - Elbow.transform.localRotation.eulerAngles.y

我猜测问题是你的真分支是左值而假分支是右值。我的解决方法使两个分支都成为右值。