会员
周边
众包
新闻
博问
闪存
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
菩提树下的杨过
博客园
首页
新随笔
订阅
管理
泛型类/泛型委托示例
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Text;
using
System.Windows.Forms;
namespace
DeletegateT
{
public
partial
class
Form1 : Form
{
public
Form1()
{
InitializeComponent();
}
private
void
button1_Click(
object
sender, EventArgs e)
{
MyClass
<
string
,
string
>
_MyClass
=
new
MyClass
<
string
,
string
>
();
//
实例化泛型类MyClass
_MyClass._MyDelegate
=
new
MyDelegate
<
string
,
string
>
(DemoMethod);
//
实例化_MyClass的泛型委托
MessageBox.Show(_MyClass.GetValues(
"
Jimmy's Book
"
,
"
Jimmy
"
));
//
此时编译器已经能确定参数的类型为String,进而通过委托调用泛型方法DemoMethod
_MyClass._MyEvent
+=
new
MyEvent
<
string
,
string
>
(DemoEvent
<
string
,
string
>
);
//
给_MyClass订阅一个事件
_MyClass.InvokeEvent(
"
Jimmy
"
,
"
China
"
);
//
激发事件
}
//
定义有返回值的委托
public
delegate
string
MyDelegate
<
T, S
>
(T title, S author);
//
定义事件委托。
public
delegate
void
MyEvent
<
E, P
>
(E Name, P Address);
public
class
MyClass
<
V, F
>
{
//
声明委托
public
MyDelegate
<
V, F
>
_MyDelegate;
//
声明事件委托
public
event
MyEvent
<
V, F
>
_MyEvent
=
null
;
public
string
GetValues(V title, F author)
{
//
调用委托
return
_MyDelegate(title, author);
}
public
MyClass()
{
}
public
void
InvokeEvent(V name, F address)
{
if
(_MyEvent
!=
null
)
{
//
调用委托
_MyEvent(name, address);
}
}
}
public
string
DemoMethod
<
T, S
>
(T title, S author)
{
return
title.ToString()
+
"
,Author:
"
+
author;
}
private
void
DemoEvent
<
V, F
>
(V name, F address)
{
MessageBox.Show(name
+
"
come from
"
+
address);
}
}
}
作者:
菩提树下的杨过
出处:
http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted @
2008-02-02 23:03
菩提树下的杨过
阅读(
419
) 评论(
0
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部
公告