[英]C# Fallback Value
在javascript中,您可以使用||
运算符实质上具有后备值,因此,如果前面的语句返回假值,则||
之后的值 用来。
因此,例如,如果GetComponent
返回null,则默认为Vector2.zero
Vector3 velocity = GetComponent<Rigidbody2D>().velocity || Vector2.zero;
有写这个的简写方式吗? 因为有了以上我得到:
运算符'||' 不能应用于类型为“ Vector2”和“ Vector2”的操作数
在C#4中,
Vector3 velocity;
var comp = GetComponent<Rigidbody2D>();
if (comp != null)
velocity = comp.velocity;
else
velocity = Vector2.zero;
另请尝试使用此版本以查看其是否有效。 更好,如果comp.velocity
是Vector2
,我希望它会。 但是我不了解Unity,所以请尝试一下。
var comp = GetComponent<Rigidbody2D>();
Vector3 velocity = (comp == null) ? Vector2.zero : comp.velocity;
您可以看到为什么?.
当操作员将其添加到语言中时,他们受到了如此大声的祝福。
当然,您可以使用:
Vector3 velocity = GetComponent<Rigidbody2D>()?.velocity ?? Vector2.zero;
?.
运算符确保如果GetComponent<Rigidbody2D>()
返回null
则不会解析.velocity
并且整个语句为null。
接下来, ??
如果运算符不为null
,则运算符将在左侧返回值( GetComponent<Rigidbody2D>()?.velocity
),如果左侧的值为null
则它将在右侧返回值( Velocity2.zero
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.