当前位置:编程学习 > C#/ASP.NET >>

代码复用重构求指点

现在代码

protected void Btn1_Click(object sender,EventArgs e)
{
  Form1 f1=new Form1();
  f.show(dockPanel);
}
protected void Btn2_Click(object sender,EventArgs e)
{
  Form2 f2=new Form2();
  f2.show(dockPanel);
}
.
.
.
protected void Btn10_Click(object sender,EventArgs e)
{
  Form10 f10=new Form10();
  f10.show(dockPanel);
}

如何将上述方法体里面的代码用一个共用方法(带参数)进行替换 --------------------编程问答-------------------- public void FormShow(Form f)
{
    f.Show(dockPanel);
}


protected void Btn10_Click(object sender,EventArgs e)
{
     Form10 f = new Form10()
     this.FormShow( f);
}
--------------------编程问答--------------------

        private void ShowDock<T>() where T: Form,new()
        {
            T frm = new T();
            frm.Show();
        }
调用
protected void Btn10_Click(object sender,EventArgs e)
{
  ShowDock<Form10>();
}

--------------------编程问答--------------------
引用 2 楼 bdmh 的回复:
C# code


        private void ShowDock<T>() where T: Form,new()
        {
            T frm = new T();
            frm.Show();
        }
调用
protected void Btn10_Click(object sender,EventArgs……
正解 --------------------编程问答-------------------- 这种复用实在是浪费时间。 --------------------编程问答-------------------- 这个复用用泛型没有意义 C#的泛型不像其他代码一样高度编译 而是浅编译到虚拟机上运行  效率并不可观  
而且代码超过5行以上再重构 频繁使用的常量则用抽取  其他的 随便写个方法应付一下就好了 
像一楼的就可以

public void FormShow(Form f)
{
  f.Show(dockPanel);
}


protected void Btn10_Click(object sender,EventArgs e)
{
  this.FormShow(new Form10());
}
 
2楼的不可取 不建议使用

题外话  
T frm = new T();
最好是写成
T frm = default(T);
--------------------编程问答--------------------
引用 1 楼 lovesongforever 的回复:
public void FormShow(Form f)
{
    f.Show(dockPanel);
}


protected void Btn10_Click(object sender,EventArgs e)
{
     Form10 f = new Form10()
     this.FormShow( f);
}


比较建议这个   
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,