这个变量是什么意思?

Kao*_*oru 0 c#

我在网上看到了这个,我想不出这是关于什么的:

他们创建了名为障碍的布尔值并将其设置为false.

   public bool obstacles = false;
Run Code Online (Sandbox Code Playgroud)

但是,这条线是什么:

    obstacles = obstacles ? false : true;

    if (obstacles)
    {
        transform.renderer.material.color = new Color(.5f, .5f, 0.0f);
    }

    else
    {
        transform.renderer.material.color = Color.white;
    }
Run Code Online (Sandbox Code Playgroud)

我知道if和else功能,当有障碍物时,将材料转换为指定的颜色,或者如果没有障碍物,将材料变成白色.但是,这条线是什么:障碍=障碍?false:是的;

谢谢..抱歉这个新手问题.

Rah*_*thi 5

?:这称为三元运算符

条件运算符(?:)根据布尔表达式的值返回两个值中的一个.以下是条件运算符的语法.

条件?first_expression:second_expression;

备注

条件必须评估为真或假.如果condition为true,则计算first_expression并成为结果.如果condition为false,则计算second_expression并成为结果.只评估两个表达式中的一个.

first_expression和second_expression的类型必须相同,或者从一种类型到另一种类型必须存在隐式转换.

MSDN的例子清楚地说明了这一点:

int input = Convert.ToInt32(Console.ReadLine());
string classify;

// if-else construction.
if (input < 0)
    classify = "negative";
else
    classify = "positive";

// ?: conditional operator.
classify = (input < 0) ? "negative" : "positive";
Run Code Online (Sandbox Code Playgroud)

正如Steeve正确指出的那样,您可以尝试使用if else语句来完成您想要完成的任务:

if (!obstacles)
{
    transform.renderer.material.color = new Color(.5f, .5f, 0.0f);
    obstacles = true;
}

else
{
    transform.renderer.material.color = Color.white;
    obstacles = false;
}
Run Code Online (Sandbox Code Playgroud)