代码复用重构求指点
现在代码
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);
}
--------------------编程问答--------------------
--------------------编程问答-------------------- 正解 --------------------编程问答-------------------- 这种复用实在是浪费时间。 --------------------编程问答-------------------- 这个复用用泛型没有意义 C#的泛型不像其他代码一样高度编译 而是浅编译到虚拟机上运行 效率并不可观
private void ShowDock<T>() where T: Form,new()
{
T frm = new T();
frm.Show();
}
调用
protected void Btn10_Click(object sender,EventArgs e)
{
ShowDock<Form10>();
}
而且代码超过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);
--------------------编程问答--------------------
比较建议这个
补充:.NET技术 , C#