如何使用bool作为int?

Joh*_*ohn 0 c# vb.net

假设我在表单上有两个按钮.如果第一个按钮被隐藏(可见=假)我宁愿第二个按钮移动.

在VB中我可以做一个简洁的任务:

Button2.Left = 22 - (90 * Button1.Visible)
Run Code Online (Sandbox Code Playgroud)

但这在C#中不起作用.我能弄清楚的唯一方法是使代码比VB更加冗长(我认为这不可能),同时使其不易读取:

button2.Left = 22 - (90 * Convert.ToInt32(button1.Visible));
Run Code Online (Sandbox Code Playgroud)

这个方便的shorcut(在赋值中使用布尔值以避免使用if)已存在数十年.Micorsoft是用C#杀了它还是有办法在没有添加函数调用之类的情况下仍然使用它?

Pau*_*ulF 8

您可以创建一个扩展方法

public static class Extensions
{
  public static int ToInt(this bool Value)
  {
    return Value ? 1 : 0;
  }
}
Run Code Online (Sandbox Code Playgroud)

然后用

Button2.Left = 22 - (90 * Button1.Visible.ToInt())
Run Code Online (Sandbox Code Playgroud)


Ped*_*Vaz 5

你可以使用三元运算符 ......

button2.Left = button1.Visible ?  22 : -68;
Run Code Online (Sandbox Code Playgroud)