C#委托演示
2010-06-20 16:15
148 查看
同样都能用来分离方法【声明】和【实现】
何时用委托,何时用接口,这是个暂时还没搞明白的问题。
可能有一些情况用委托方便,而用接口则比较麻烦。
比如,在同一个类中,需要实现方法的多个版本。
这时候,用委托可以方便的实现多个接口相同的方法,送给委托调用;而接口就有点不方便了。
下面做了一个简单的演示用窗口程序。
做一个窗口程序,点击按钮时调用上面的错误处理程序Class1
何时用委托,何时用接口,这是个暂时还没搞明白的问题。
可能有一些情况用委托方便,而用接口则比较麻烦。
比如,在同一个类中,需要实现方法的多个版本。
这时候,用委托可以方便的实现多个接口相同的方法,送给委托调用;而接口就有点不方便了。
下面做了一个简单的演示用窗口程序。
using System;
using System.Collections.Generic;
using System.Text;
namespace myFormApp.lib
{
class Class1
{
//委托声明
public delegate void outputMsg(string message);
public void dealWithError(String strMsg,outputMsg inDel)
{
/*
*TODO 错误处理逻辑是演示用的控制台打印
*/
System.Console.WriteLine("dealwith error!");
//用传递进来的错误信息打印方法答应信息。
//但是此处不意识具体的信息输出方式。
inDel(strMsg);
}
}
}
做一个窗口程序,点击按钮时调用上面的错误处理程序Class1
using System;
using System.Text;
using System.Windows.Forms;
using myFormApp.lib;
using System.IO;
namespace myFormApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//按钮点击触发
private void button1_Click(object sender, EventArgs e)
{
Class1 testObj = new Class1();
//调用错误处理方法,同时传入putMsgToConsole方法的地址,将信息出到控制台
testObj.dealWithError("errorMsg to console!", putMsgToConsole);
//调用错误处理方法,同时传入putMsgToFile方法的地址,将信信息出到文件
testObj.dealWithError("errorMsg to File!", putMsgToFile);
}
//委托的实现方法1,将信息出于控制台
private void putMsgToConsole(String msg)
{
System.Console.WriteLine(msg);
}
//委托的实现方法2,将信息出于文件
private void putMsgToFile(String msg)
{
string path = @"D:\TestMsg.log";
if (!File.Exists(path))
{
using (FileStream fs = File.Create(path)) { }
}
using (FileStream fs = File.OpenWrite(path))
{
Byte[] info =
new UTF8Encoding(true).GetBytes(msg);
fs.Write(info, 0, info.Length);
}
}
}
}
相关文章推荐
- C#委托及委托链的演示
- C#委托讲解以及示例演示
- 基于C#委托的深入分析
- C#委托
- 用PowerPoint生动地演示几何应用题
- 马尔可夫链的演示Python
- 动画演示平衡二叉树旋转
- activeMq 安装与演示
- Shiro与ssm登录权限验证案例演示
- 艾伟_转载:解惑答疑:C#委托和事件
- nginx subrequest演示示例程序
- 免费的精品: Productivity Power Tools 动画演示
- Thinkphp系统常量详细演示
- 近期做了一个自己主动纠错演示网页
- 实战小项目之RTMP流媒体演示系统
- “消息队列”学习文摘及Demo演示
- 【转载】常用编辑软件:记事本TXT、Word文档,PPT演示文档、PDF阅读器之间的转换方法
- Java 迭代器演示
- 对DCI架构思想的领域建模基础架构及一个图书借阅系统的演示Demo层进行重构
- C#委托