假设我在表单上有两个按钮.如果第一个按钮被隐藏(可见=假)我宁愿第二个按钮移动.
在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#杀了它还是有办法在没有添加函数调用之类的情况下仍然使用它?
您可以创建一个扩展方法
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)
你可以使用三元运算符 ......
button2.Left = button1.Visible ? 22 : -68;
Run Code Online (Sandbox Code Playgroud)