• switch case 遇到判断type分支的写法


    一叶障目,没有接触到的知识点真是太多了......

    最近项目里需要用到一个小工具,就用winform写了一个出来,然后需要一个功能就是清空控件内容,我这个工具就用到了textbox和combobox,就拿这两个做示例了。

    对于清空winform控件,网上搜索答案基本都是需要转化成string然后比较name的硬编码,参考:

    https://stackoverflow.com/questions/7252186/switch-case-on-type-c-sharp

    https://www.cnblogs.com/lonelyxmas/p/5472462.html

    当我这么写了之后,就像下面这样,被review代码的资深嫌弃了......

     private void ClearCntrValue(Control parContainer)
            {
                for (int index = 0; index < parContainer.Controls.Count; index++)
                {
                    // 如果是容器类控件,递归调用自己
                    if (parContainer.Controls[index].HasChildren)
                    {
                        ClearCntrValue(parContainer.Controls[index]);
                    }
                    else
                    {
                        switch (parContainer.Controls[index].GetType().Name)
                        {
                            case "TextBox":
                                parContainer.Controls[index].Text = "";
                                break;
                            case "RadioButton":
                                ((RadioButton)(parContainer.Controls[index])).Checked = false;
                                break;
                            case "CheckBox":
                                ((CheckBox)(parContainer.Controls[index])).Checked = false;
                                break;
                            case "ComboBox":
                                ((ComboBox)(parContainer.Controls[index])).Text = "";
                                break;
                        }
                    }
                }
            }

    于是就学了在现在的我看起来的神操作,就像这样:

     private void ClearCntrValue(Control.ControlCollection controls)
            {
                foreach (Control ctr in this.Controls)
                {
                    switch (ctr)
                    {
                        case TextBox text:
                            text.Text = "";
                            break;
                        case ComboBox comboBox:
                            comboBox.SelectedItem = OperateType.PleaseWait;
                            break;
                    }
                }
            }

    参考官方文档:

    https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/switch

    每天进步一点点,咱不能什么都知道,但是看到了好的东西就记下来,慢慢积累就牛起来啦。

  • 相关阅读:
    JavaScript中的setMonth()方法的小问题 解决:setMonth(month, 1)
    Bootstrap的Model源码详细注释 (转)
    中检测到有潜在危险的 Request.Form 值。
    JQuery EasyUI DataGrid获取当前行
    VS 开发必用插件
    C# MVC模式 404 500页面设置方法
    (转)高性能网页开发的14条军规
    (转)mysql百万级以上查询优化
    Win7/Win8安装"我们无法创建新的分区,也找不到现有的分区"的解决方法
    SQL Server2008 删除登录记录
  • 原文地址:https://www.cnblogs.com/Mindy-hym/p/9298733.html
Copyright © 2020-2023  润新知