繁体   English   中英

C#后备值

[英]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.velocityVector2 ,我希望它会。 但是我不了解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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM