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;
}
}
查看全文
相关阅读:
配置字段(居左,居中,居右,高度自适应)
将添加的表格框中数据保存到_data中,
一维数组变二维数组
时间戳转换
vue 前端生成二维码
vue嵌套循环
vue浏览器标题
谷歌浏览器中安装JsonView扩展程序
实现点击页面其他地方,隐藏div(vue)
VUE模拟select
原文地址:https://www.cnblogs.com/abcdwxc/p/961804.html
最新文章
单例模式
spring中InitializingBean接口使用理解
Nginx详细的安装教程(linux)
js 变量提升
js 运行机制
web 渲染
web安全类
web 通信类
web 原型链与对象
css--盒模型
热门文章
arc-web项目总结
http协议理解
web大前端开发中一些常见的安全性问题
字符串拼接
iframe1(跨页面父子页面问题)
iframe(跨页面父子页面问题)
title属性显示以及文字太多显示不下用..代替
搜索框键盘抬起事件2
搜索框键盘抬起事件1
数据传递(——>后台)
Copyright © 2011-2022 走看看