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

Per*_*hik 13 c# compiler-errors unity-game-engine

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

原始代码

float currElbowAngle = LeftArm ? Elbow.transform.localRotation.eulerAngles.y 
                               : 360f - Elbow.transform.localRotation.eulerAngles.y
Run Code Online (Sandbox Code Playgroud)

我正在使用Unity3d和C#; LeftArm是一种bool类型,根据文档 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
Run Code Online (Sandbox Code Playgroud)

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

更新1:弯头是一个GameObject,这个错误是在Visual Studio中

dou*_*536 3

三元 (e?a:b) 运算符对于类型系统来说稍微棘手一些,因为双方都需要给出相同的返回类型。如果那里有一个微妙的错误,我不会感到惊讶。遵守者偶尔让我们开怀大笑是件好事。

这也可能修复它:

float currElbowAngle = LeftArm ? 0.0f + Elbow.transform.localRotation.eulerAngles.y 
                               : 360f - Elbow.transform.localRotation.eulerAngles.y
Run Code Online (Sandbox Code Playgroud)

我推测问题在于您的 true 分支是左值,而 false 分支是右值。我的解决方法使两个分支都成为右值。