在swift中,可以通过在var上调用.toggle()
来切换Boolean
。
var isVisible = false
isVisible.toggle() // true
我想在c#中创建相同的功能,所以我在bool
上写了一个扩展方法public static class Utilities {
public static void Toggle(this bool variable) {
variable = !variable;
//bool temp = variable;
//variable = !temp;
}
}
然而,它不起作用,我怀疑它与c#中的bool
是值类型有关,而它们在swift中是引用类型。
是否有一种方法可以在c#中实现相同的toggle函数?
您可以通过接受this
bool
objectby reference:
public static class Utilities
{
//-----------------------------vvv
public static void Toggle(this ref bool variable)
{
variable = !variable;
}
}
class Program
{
static void Main(string[] args)
{
bool b1 = true;
Console.WriteLine("before: " + b1);
b1.Toggle();
Console.WriteLine("after: " + b1);
}
}
输出:
before: True
after: False
注意:该特性仅在c# 7.2中可用。看到这里。