是否有可能通过在c#中调用同一变量的扩展方法来改变bool值?



在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函数?

您可以通过接受thisboolobjectby 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中可用。看到这里。

相关内容

  • 没有找到相关文章

最新更新