Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有什么方法可以优化这个c代码吗?_C#_Button_Optimization - Fatal编程技术网

C# 有什么方法可以优化这个c代码吗?

C# 有什么方法可以优化这个c代码吗?,c#,button,optimization,C#,Button,Optimization,这个代码段在我的程序中重复了很多次,但是还有其他按钮,比如按钮3和4,按钮5和6等等。我想知道它是否可以优化或缩短 if (File.Exists(name1)) { button1.IsEnabled = false; button1.Visibility = Visibility.Hidden; button2.IsEnabled =

这个代码段在我的程序中重复了很多次,但是还有其他按钮,比如按钮3和4,按钮5和6等等。我想知道它是否可以优化或缩短

    if (File.Exists(name1))
                {
                    button1.IsEnabled = false;
                    button1.Visibility = Visibility.Hidden;
                    button2.IsEnabled = true;
                    button2.Visibility = Visibility.Visible;
                }
                else
                {
                    button1.IsEnabled = true;
                    button1.Visibility = Visibility.Visible;
                    button2.IsEnabled = false;
                    button2.Visibility = Visibility.Hidden;
                }
            }
            else
            {
                button1.IsEnabled = true;
                button1.Visibility = Visibility.Visible;
                button2.IsEnabled = false;
                button2.Visibility = Visibility.Hidden;
            }            
重要的不是代码的长度。应避免重复逻辑:

private void HideAndDisable(Button b)
{
    b.IsEnabled = false;
    b.Visibility = Visibility.Hidden;
}

private void ShowAndEnable(Button b)
{
    b.IsEnabled = true;
    b.Visibility = Visibility.Visible;
}

public void SomeMethod()
{
    if(condition)
    {
        HideAndDisable(button1);
        ShowAndEnable(button2);
    }
    else
    {
        HideAndDisable(button2);
        ShowAndEnable(button1);
    }
}
它导致了一个代码:

  • 更容易理解
  • 可以很容易地重复使用
  • 避免隐藏的bug
  • 更容易改变

这样行吗?有些东西不见了,对吧?欢迎来到SO。请重新检查您的问题,因为您发布的代码不完整。它缺少一个
if
语句来匹配最后一个
else
@spender bruh我知道它还没有完成。。。。我只需要帮助优化这一部分。给控件起个好名字。2.具有许多操作的复杂逻辑可分为两个明确步骤:评估和执行。3.这是WPF,查看MVVM,使用它将使您的代码更加干净。4.无需禁用隐藏元素(我猜您这样做是因为您在其他地方使用了
按钮1.I启用了
,请查看MVVM)。5.您的问题缺少重要的详细信息,请参阅。将签名更改为
params Button[]b
并添加
foreach
将允许您一次调用多个按钮。类似于
hideandisable(按钮1、按钮2、按钮3)