如何将bool用作int?

时间:2016-09-08 14:06:34

标签: c# vb.net

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

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

Button2.Left = 22 - (90 * Button1.Visible)

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

button2.Left = 22 - (90 * Convert.ToInt32(button1.Visible));

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

4 个答案:

答案 0 :(得分:8)

您可以创建扩展方法

public static class Extensions
{
  public static int ToInt(this bool Value)
  {
    return Value ? 1 : 0;
  }
}

然后使用

Button2.Left = 22 - (90 * Button1.Visible.ToInt())

答案 1 :(得分:5)

您可以使用ternary operator ...

button2.Left = button1.Visible ?  22 : -68;

答案 2 :(得分:1)

不能直接使用,但这可能是一个合适的捷径:

Button2.Left = 22 - (90 * Button1.Visible ? 1 : 0)

答案 3 :(得分:-1)

你改变为休闲,

Button2.Left = 22 - (90 * Convert.ToInt16(Button1.Visible))

如果1 get为true或0 get为false,则转换为Boolean