一、接口
- .NET中接口的定义规范
- 使用关键字interface定义,接口类名称通使用“I”开头
- 接口中的属性、方法等,只是做一个声明,而没有任何实现
- 接口中的属性、方法等,默认是public
interface IStudent { //属性 string StudentName{get;set;} string StudentGender{get;set;} //接口方法 string GetStudentInfo(); void Study(); }
- 接口特点
- 接口具有强制性,实现接口的类必须实现接口所有的成员
- 一个类可以实现多个接口,也可以同时继承其他类,先继承类后实现接口
- 接口实践应用
- 提高团队成员并行开发项目的效率
- 接口使用者值关心接口的应用功能,而不关心接口的实现细节
- 接口的实现者只关心接口如何实现的内部细节,不关心谁使用
class HPMultiPrinter:IMultiPrinter { public void Print(string contents) { .... } public void Copy(string contents) { .... } public void Fax(string contents) { .... } } static void Main(string[] args) { IMultiPrinter objHPPrint = new HPMultiPrinter(); objHPPrint.Print("信息表"); ... } - 接口应用总结
- 接口的应用场合
- 如果某一个功能点需求变化较多,应使用接口保证系统的可扩展性
- 如果想实现团队成员的并发开发,可以使用接口来规范对象的使用
- 接口编写规范
- 接口成员只能是一个声明
- 实现接口的类必须全部实现接口中规定的属性、方法
- 特别说明
- 接口的使用不是必须的,需要根据用户的需求来决定
- 接口与抽象类的比较

- 接口的应用场合
- 提高团队成员并行开发项目的效率
二、接口框架设计
接口设计,源于对需求的更好的理解
接口抽取,就是根据需求模块,进行功能分装
三、委托应用-主从窗体通信
从窗体向主窗体传递数据

1.主窗体中声明委托:
public delegate void ShowCounter(string counter);
2.根据委托创建方法
//接收委托传递的信息
private void Receiver(string counter)
{
this.lblCount.Text = counter;/.界面显示
}
3.从窗体穿件委托变量
public ShowCounter msgSender;
//主窗体
namespace DeletegateFromComm
{
/// <summary>
/// 主窗体
/// </summary>
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Form2 obj = new Form2();
//将从窗体的委托变量和主窗体的对应方法关联
obj.msgSender = this.Receiver;
obj.Show();
}
private void Receiver(string counter)
{
this.lblCount.Text = counter;
}
}
/// <summary>
/// 声明委托
/// </summary>
/// <param name="counter"></param>
public delegate void ShowCounter(string counter);
}
//从窗体
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
//根据委托创建委托对象
public ShowCounter msgSender;
private int counter = 0;
private void button1_Click(object sender, EventArgs e)
{
counter++;
if (msgSender != null)
{
msgSender(counter.ToString());
}
}
}
主窗体向从窗体发送信息
主窗体
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Frm01 obj1 = new Frm01();
Frm02 obj2 = new Frm02();
Frm03 obj3 = new Frm03();
this.msgSender += obj1.Receicee;
this.msgSender += obj2.Receicee;
this.msgSender += obj3.Receicee;
obj1.Show();
obj2.Show();
obj3.Show();
}
public ShowCounter msgSender;
private int counter = 0;
private void button1_Click(object sender, EventArgs e)
{
counter++;
//同时发送消息
this.msgSender.Invoke(counter.ToString());
}
private void button2_Click(object sender, EventArgs e)
{
counter = 0;
this.msgSender.Invoke("0");
}
}
public delegate void ShowCounter(string counter);
从窗体
public partial class Frm01 : Form
{
public Frm01()
{
InitializeComponent();
}
/// <summary>
/// 接收委托传递的信息
/// </summary>
/// <param name="counter"></param>
public void Receicee(string counter)
{
this.lblCount.Text = counter;
}
}
本文深入探讨了C#中的接口定义与应用,包括接口的强制性和并行开发优势,以及接口与抽象类的对比。同时,详细讲解了委托在主从窗体间通信的应用,演示了数据如何在窗体间双向传递。
1156

被折叠的 条评论
为什么被折叠?



