有没有办法在C#中切换布尔变量?
有没有办法在C#中切换布尔变量的状态 我知道这是一个简单的解决方案:有没有办法在C#中切换布尔变量?,c#,boolean,C#,Boolean,有没有办法在C#中切换布尔变量的状态 我知道这是一个简单的解决方案: bool locked = false; if (locked == false) { locked = true; } else { locked = false; } 但它能在一行中完成吗 bool locked = false locked = locked.toggle(); public static class Helpers { public static bool Toggle(
bool locked = false;
if (locked == false)
{
locked = true;
}
else
{
locked = false;
}
但它能在一行中完成吗
bool locked = false
locked = locked.toggle();
public static class Helpers
{
public static bool Toggle(this bool value)
{
return !value;
}
}
对。使用以下命令:
locked = !locked;
你试过下列方法吗
locked = !locked;
您可以这样定义扩展方法:
bool locked = false
locked = locked.toggle();
public static class Helpers
{
public static bool Toggle(this bool value)
{
return !value;
}
}
这样您就可以编写更有意义的内容,如locked=locked.Toggle()
希望对您有所帮助您还可以:
locked ^= true;
我认为chomba的答案是很好的,在使用时可以做出改进
哇,那很容易。该语法可以应用于任何其他变量类型吗?
运算符可以由其他类型重载,但很少重载,因为以一种不能用显式命名方法更好地表示的方式对许多类型进行逻辑反转通常没有直观意义。如果您不知道该语言的语法,则“更有意义”。在我看来,这似乎是不必要的复杂性。当然,但仅仅因为您可以定义扩展方法并不意味着您应该这样做。一个C#程序员应该知道什么是逻辑“!”运算符有。我完全同意,我只是想给出另一个答案。仅供参考-您可以直接在if()
stations中使用布尔值。例如if(locked){…}
或if(!locked&&count>0){…}
。为什么/如何工作?解释或链接?^是唯一的或。“true^true”是假的,“false^true”是真的。因此,通过执行“xyz^true”,可以反转左侧的值。我的行是“locked=locked^true”的简写;这应该是公认的答案!