zoukankan
html css js c++ java
泛型委托
委托
可以定义自己的类型参数。引用泛型委托的代码可以指定类型参数以创建已关闭的构造类型,就像实例化泛型类或调用泛型方法一样,如下例所示:
public
delegate
void
Del
<
T
>
(T item);
public
static
void
Notify(
int
i)
{ }
Del
<
int
>
m1
=
new
Del
<
int
>
(Notify);
C# 2.0 版具有称为方法组转换的新功能,此功能适用于具体委托类型和泛型委托类型,并使您可以使用如下简化的语法写入上一行:
Del<
int
> m2 = Notify;
在泛型类内部定义的委托使用泛型类类型参数的方式可以与类方法所使用的方式相同。
class
Stack
<
T
>
{
T[] items;
int
index;
public
delegate
void
StackDelegate(T[] items);
}
引用委托的代码必须指定包含类的类型变量,如下所示:
private
static
void
DoWork(
float
[] items)
{ }
public
static
void
TestStack()
{
Stack
<
float
>
s
=
new
Stack
<
float
>
();
Stack
<
float
>
.StackDelegate d
=
DoWork;
}
根据典型设计模式定义事件时,泛型委托尤其有用,因为发送方参数可以为强类型,不再需要强制转换成
Object
,或反向强制转换。
delegate
void
StackEventHandler
<
T, U
>
(T sender, U eventArgs);
class
Stack
<
T
>
{
public
class
StackEventArgs : System.EventArgs
{ }
public
event
StackEventHandler
<
Stack
<
T
>
, StackEventArgs
>
stackEvent;
protected
virtual
void
OnStackChanged(StackEventArgs a)
{
stackEvent(
this
, a);
}
}
class
SampleClass
{
public
void
HandleStackChange
<
T
>
(Stack
<
T
>
stack, Stack
<
T
>
.StackEventArgs args)
{ }
}
class
Test
{
public
static
void
Main()
{
Stack
<
double
>
s
=
new
Stack
<
double
>
();
SampleClass o
=
new
SampleClass();
s.stackEvent
+=
o.HandleStackChange;
}
}
查看全文
相关阅读:
Python的subprocess子进程和管道进行交互
python UnicodeEncodeError: 'ascii' codec can't encode characters 解决办法
如何创建,增加swap
nginx.conf配置
15个极好的Linux find命令示例(二)
15个实用的Linux find命令示例(一)
vmware 虚拟机 mount :no medium found解决方法
服务器上的iptables
源码编译安装MySQL
ORACLE参数文件
原文地址:https://www.cnblogs.com/abcdwxc/p/961804.html
最新文章
17美团编程题-拼凑面额
扇形图色问题
window.jQuery || document...
user-modify属性。
移动端 h5开发相关内容总结(三)
jquery-懒加载技术(简称lazyload)
jquery返回页面顶部
移动端js触摸事件大全
table的border-collapse属性与border-spacing属性
基于CSS属性display:table的表格布局的使用
热门文章
css3属性-webkit-font-smoothing
jQuery如何退出each循环 和如何退出function函数
python marshal 对象序列化和反序列化
如何用python最快的获取大文件的最后几行
如何用python最快的获取大文件的最后几行
linux命令:du 命令
linux命令:du 命令
linux命令:du 命令
Python的subprocess子进程和管道进行交互
Python的subprocess子进程和管道进行交互
Copyright © 2011-2022 走看看