【问题标题】:How to shorten the Long Parameter List in a Clean and Proper Way [duplicate]如何以干净和正确的方式缩短长参数列表[重复]
【发布时间】:2019-02-22 10:35:28
【问题描述】:

这是我的代码

public static class ButtonProperties
{
    public static void _ButtonProperties(Button btn_dashboard, Button btn_products, Button btn_supplier, Button btn_customer, Button btn_sales, Button btn_inventory, Button btn_settings)
    {
        btn_dashboard.FlatStyle = FlatStyle.Flat;
        btn_dashboard.FlatAppearance.BorderSize = 0;
        btn_products.FlatStyle = FlatStyle.Flat;
        btn_products.FlatAppearance.BorderSize = 0;
        btn_supplier.FlatStyle = FlatStyle.Flat;
        btn_supplier.FlatAppearance.BorderSize = 0;
        btn_customer.FlatStyle = FlatStyle.Flat;
        btn_customer.FlatAppearance.BorderSize = 0;
        btn_sales.FlatStyle = FlatStyle.Flat;
        btn_sales.FlatAppearance.BorderSize = 0;
        btn_inventory.FlatStyle = FlatStyle.Flat;
        btn_inventory.FlatAppearance.BorderSize = 0;
        btn_settings.FlatStyle = FlatStyle.Flat;
        btn_settings.FlatAppearance.BorderSize = 0;
    }
}

如您所见,这需要太多参数,我想缩短它。

【问题讨论】:

  • 只使用一个列表
  • 你不想把所有东西都做static,这不是你使用像C#这样的OP语言的原因。这样你的整个应用程序只能有一个ButtonProperties
  • @TimSchmelter 我注意到谢谢,我在这里使用静态,所以我不需要创建新实例
  • @Anonymous Stack Overflow 不是论坛。我们不会修改标题来表示某个问题已得到回答。如果您选择了一个问题作为答案(您已经这样做了),则会回答一个问题
  • @CamiloTerevinto 啊,注意到先生谢谢你纠正我:)

标签: c# winforms


【解决方案1】:

您可以使用params-array

public static class ButtonProperties
{
    public static void _ButtonProperties(params Button[] buttons)
    {
        foreach (Button b in buttons)
        {
            b.FlatStyle = FlatStyle.Flat;
            b.FlatAppearance.BorderSize = 0;
        }
    }
}

现在您可以传递单个按钮、多个(逗号分隔)甚至是Button[]

举个例子:

ButtonProperties._ButtonProperties(btn_dashboard, btn_products);

【讨论】:

  • 你应该展示它是如何被调用的,因为这使得这个答案比其他答案更好。
  • 这很简洁,因为它不需要列表
  • 我还建议 OP 调用此方法 SetFlatProperties() 而不是 _ButtonProperties()
  • @Julo 在此处的答案中尽可能多地(和相关)修复是很常见的。展示如何正确编写代码非常重要。
  • @Anonymous,仪表板似乎无关。如果函数将按钮属性设置为没有边框的平面。名称应该与此相关。我会选择“SetButtonPropertiesFlat”或“SetButtonFlat”。所以只要看名字我就对这个功能有一个完整的了解。
【解决方案2】:

既然你对每个按钮都做同样的事情,为什么不直接传递一个列表呢?

public static void _ButtonProperties(List<Button> buttons)
{
    foreach (var button in buttons)
    {
         button.FlatAppearance.BorderSize = 0;
         button.FlatStyle = FlatStyle.Flat;
    }
}

【讨论】:

    【解决方案3】:

    你可以有一个列表,而不是固定的参数早午餐。

    public static void SetButtonProperties(List<Button> buttons){
        foreach(var button in buttons){
            button.FlatStyle = FlatStyle.Flat;
            button.FlatAppearance.BorderSize = 0;
        }
    }
    

    这样称呼它:

     SetButtonProperties(new List<Button>{ btn_dashboard, btn_products, btn_supplier, ... })
    

    【讨论】:

    • Imo 不是真的,我希望我有更多关于这些按钮的信息,以及是什么让它们有资格进行此重置。或者为“ButtonProperties”起一个更好的名字
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    相关资源
    最近更新 更多