说我在表单上有两个按钮。如果第一个按钮被隐藏(可见=假),我宁愿第二个按钮移动。
在VB中我可以做一个简明的任务:
Button2.Left = 22 - (90 * Button1.Visible)
但这在C#中不起作用。我能弄清楚的唯一方法是使代码比VB更加冗长(我认为这不可能),同时使其不易读取:
button2.Left = 22 - (90 * Convert.ToInt32(button1.Visible));
这个方便的shorcut(在赋值中使用布尔值来避免使用if)已经存在了数十年。 Micorsoft是用C#杀了它还是有办法在没有添加函数调用之类的情况下仍然使用它?
答案 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