zoukankan
html css js c++ java
泛型类/泛型委托示例
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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
查看全文
相关阅读:
电脑知识
编译器错误信息: CS0433: 类型“ASP.global_asax”同时存在于“c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727...的解决方法
windows平台下的oracle ORA-01031的解决方法
.NET下使用HTTP请求的正确姿势
EasyUI Datagrid 分页
Js 运算符(加减乘除)
Navicat 运行 Oracle 存储过程示例
oracle数据库忘记sys(或system)账户密码
SQL Server 死锁问题
C# 给某个方法设定执行超时时间
原文地址:https://www.cnblogs.com/yjmyzz/p/1063058.html
最新文章
js实现图片点击弹出放大效果
js替换字符串中的空格,换行符 或 替换成<br>
Form表单之复选框checkbox操作
js如何判断数据类型
php封装
js面向对象轮播图写法
原生js的常见封装
原生js方面的兼容性问题
深入浅出:了解世上最全的数组去重方式
封装一个方法获取url上面的参数
热门文章
前端页面常见布局问题
vue和react总结
前端面试会遇到的奇葩难题
Jenkins asp.net
各浏览器下载文件名称长度差异
zabbix 5.0
mariadb
sql server 系统视图
js代码段
appcmd cmd 操作IIS
Copyright © 2011-2022 走看看