C# 这个变量意味着什么?
我在互联网上看到了这一点,我想不出这是怎么回事: 他们创建了名为“障碍物”的布尔值,并将其设置为falseC# 这个变量意味着什么?,c#,C#,我在互联网上看到了这一点,我想不出这是怎么回事: 他们创建了名为“障碍物”的布尔值,并将其设置为false public bool obstacles = false; 但是,这句话是关于什么的: obstacles = obstacles ? false : true; if (obstacles) { transform.renderer.material.color = new Color(.5f, .5f, 0.0f); }
public bool obstacles = false;
但是,这句话是关于什么的:
obstacles = obstacles ? false : true;
if (obstacles)
{
transform.renderer.material.color = new Color(.5f, .5f, 0.0f);
}
else
{
transform.renderer.material.color = Color.white;
}
我知道if和else功能,当有障碍物时,将材质转换为指定的颜色,或者如果没有障碍物,将材质转换为白色。但是,这条线是关于什么的:障碍=障碍?假:真
谢谢。。很抱歉这个新问题。这是三元运算符。基本上,如果条件为true,则执行第一条语句,否则执行第二条语句 状况?第一个表达式:第二个表达式 ?:这被称为 条件运算符?:返回两个值中的一个,具体取决于 布尔表达式的值。下面是 条件运算符 状况?第一个表达式:第二个表达式 评论 条件的计算结果必须为true或false。如果条件为真, 对第一个表达式求值并成为结果。如果条件是 false,第二个_表达式被计算并成为结果。只有一个 计算这两个表达式中的一个 第一个_表达式和第二个_表达式的类型必须是 相同,或者必须存在从一种类型到另一种类型的隐式转换 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";
这条线基本上将障碍物变量的值翻转为相反的值。如果障碍为真,它会将其值更改为假,反之亦然。因此,这段代码的作者可能正试图在这里绘制类似于交错模式的东西
?: called ternary operator
功能:
var value= (Condition/Expression)? value1 :value2;
意味着
if(Condition== true)
value=value1;
else
value=value2;
您的代码:
public static bool obstacles = true;
bool value=(obstacles = obstacles) ? false : true;
输出:值=false
您的表达式=>障碍=障碍始终计算为障碍中的任何值,因此这里是真的。
因此,这里的第一个值false将分配给变量值。所有答案都解释了什么是三元运算符,它们都是正确的,但每个人都没有注意到房间里的大象。为什么不删除三元运算符并按如下方式编写上述代码
if (!obstacles)
{
// Enter the if with obstacles = false, but execute the code for true then flip obstacles
transform.renderer.material.color = new Color(.5f, .5f, 0.0f);
obstacles = true;
}
else
{
// Enter the else with obstacles = true, but execute the code for false then flip obstacles
transform.renderer.material.color = Color.white;
obstacles = false;
}
我宁愿写障碍=!“障碍,或者按照史蒂夫的方法去做,但现在你知道这意味着什么了。”西尔弗明,也许是你的better@Silvermind当前位置如果我想接受你的建议。该代码将类似于if语句将执行障碍或barriends=true,else语句将执行!障碍或障碍=错误。先生,我在某些方面错了吗?是的,现在我已经知道了。感谢你和每个人的眼睛,你是对的,但如果你能,我会在HasBarriends中重命名障碍,这样当你写IfHasBarriends trueCondition或者FalseCondition时,它更可读,非常感谢!我现在明白了为什么不简单的障碍=!障碍?@SimonWhitehead,因为我没有想到它:-见上面Silvermind的评论。
if (!obstacles)
{
// Enter the if with obstacles = false, but execute the code for true then flip obstacles
transform.renderer.material.color = new Color(.5f, .5f, 0.0f);
obstacles = true;
}
else
{
// Enter the else with obstacles = true, but execute the code for false then flip obstacles
transform.renderer.material.color = Color.white;
obstacles = false;
}