C#拾遗系列(5):泛型委托
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace NetTest
{
//泛型委托
class TestGenericDelegate
{
public delegate void StackEventHandler<T, U>(T sender, U eventArgs);
class Stack<T>
{
/*
在泛型类和泛型方法中产生的一个问题是,在预先未知以下情况时,如何将默认值分配给参数化类型 T:
T 是引用类型还是值类型。
如果 T 为值类型,则它是数值还是结构
给定参数化类型 T 的一个变量 t,只有当 T 为引用类型时,语句 t = null 才有效;只有当 T 为数值类型而不是结构时,语句 t = 0 才能正常使用。
解决方案是使用 default 关键字,此关键字对于引用类型会返回 null,对于数值类型会返回零。
对于结构,此关键字将返回初始化为零或 null 的每个结构成员,具体取决于这些结构是值类型还是引用类型
*/
public T getName()
{
T temp = default(T);
return temp;
}
public class StackEventArgs : EventArgs
{
public string Name { get; set; }
public string Message { get; set; }
}
public event StackEventHandler<Stack<T>, StackEventArgs> stackEvents;
public void StackChange()
{
StackEventArgs s = new Stack<T>.StackEventArgs();
s.Name = "jack";
s.Message = "Better Man";
OnStackChanged(s);
}
protected virtual void OnStackChanged(StackEventArgs e)
{
stackEvents(this, e);
}
}
class SampleClass
{
public void HandleStackChange<T>(Stack<T> stack, Stack<T>.StackEventArgs args)
{
Console.Out.WriteLine(args.Message + "," + args.Name);
}
}
public void Test()
{
Stack<double> s = new Stack<double>();
SampleClass o = new SampleClass();
s.stackEvents += o.HandleStackChange;
s.StackChange();
Console.Out.WriteLine(s.getName());
}
}
}
C#拾遗系列(5):泛型委托相关推荐
- 七天学习计划_c#_[2][3][4][5]委托、事件、委托与事件的区别、泛型委托、Func\Action\predicate
由于委托之前的博客已经详细写了,这里就简单的过一遍,复习一下: 了解委托 基于委托开发事件驱动程序变得非常简单. 使用委托可以大大简化多线程编程难度. 理解委托 委托也可以看做成一种数据类型,可以定义 ...
- 委托、lamda表达式..委托概念-匿名函数-泛型委托-Lamda表达式-多播委托
委托 一.什么是委托? 将一个方法作为参数传递给另一个方法(参数类型为委托delegate). 声明一个委托类型. 委托所指向的函数必须跟委托具有相同的的签名(参数个数.参数类型.返回值一样). ...
- 泛型委托在项目中的应用
Action<T> 泛型委托:封装一个方法,该方法只采用一个参数并且不返回值.可以使用此委托以参数形式传递方法,而不用显式声明自定义的委托.该方法必须与此委托定义的方法签名相对应.也就是说 ...
- 使用.NET中的Action及Func泛型委托
原文 http://www.cnblogs.com/skm-blog/archive/2013/05/24/3096294.html 委托,在C#编程中占有极其重要的地位,委托可以将函数封装到委托对象 ...
- 泛型委托 Predicate/Func/Action
Predicate 泛型委托 表示定义一组条件并确定指定对象是否符合这些条件的方法.此委托由 Array 和 List 类的几种方法使用,用于在集合中搜索元素. 看看下面它的定义: // Summ ...
- Func〈T, TResult〉 泛型委托 以及演变历程
以下内容为菩提树下的杨过根据微软MSDN整理,转贴请注明出处 MSDN对于Func<T, TResult>)的官方解释: 封装一个具有一个参数并返回 TResult 参数指定的类型值的 ...
- C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法
使用C#实现加减乘除算法经常被用作新手练习.本篇来分别体验通过委托.接口.匿名方法.泛型委托来实现. 使用委托实现 加减乘除拥有相同的参数个数.类型和返回类型,首先想到了使用委托实现. //创建一个委 ...
- 分别使用委托、接口、匿名方法、泛型委托实现加减乘除运算
使用委托实现 加减乘除拥有相同的参数个数.类型和返回类型,首先想到了使用委托实现. //创建一个委托 public delegate decimal MathOperation(decimal lef ...
- 大白话系列之C#委托与事件讲解大结局
今天是大白话系列之C#委托与事件讲解的大结局,也是我们最关心的,在日常的MES系统编程中到底怎样使用这样的利器,其实我们每天都在使用事件,一个窗体,一个按钮都包含这事件,只是很少用到自己写的委托和事件 ...
最新文章
- 解释大型网站js,css文件后面为什么有参数?
- 【caffe】使用draw_net绘制net结构
- optee应用程序中malloc函数的原理介绍
- DCMTK:读取DICOM图像,添加模态LUT并将其写回
- of介词短语作定语_介词短语用作状语/定语/表语/复合宾语
- 四十六 常用内建模块 itertools
- UVA - 10603 Fill(隐式图搜索)
- sql同时修改两个表的数据_如何用SQL做数据透视表?
- 我常用的那些 Git 命令
- 《简明python教程》沈洁元
- Gazbo下的无人车集群导航仿真
- 计算机网络线接法,电脑网线插座接法图文详解
- 计算机基础与应用答案,第4章 课后作业【含答案】 计算机基础与应用
- Linux操作系统安全(一)
- 如何定制B2C电商网站
- 代理服务器可能有问题,或地址不正确(已解决)
- 查找读者姓名mysql_练习1.sql · 刘友亮/mysql第三次作业 - Gitee.com
- 【进阶4-2期】Object.assign 原理及其实现
- 匿名软件竟成网络侵权避风港
- html中怎么固定一张图片大小,固定大小的div,不固定大小的图片如何放入div?
热门文章
- Win11如何禁用USB端口?禁用USB端口的方法
- python pip升级报错
- 数据挖掘与其商务智能上的应用的实验报告
- 怎么让电脑运行速度变快_加快电脑运行速度的6个秘笈,系统安装,电脑维修必备技巧...
- jmeter 导出聚合报告_使用Jmeter聚合报告生成对比图表
- python怎么发音乐到朋友圈_只要三步,用Python轻松制作短视频,你也能在朋友圈傲娇一把!...
- ❤️《微服务开发—Swagger》(建议收藏)
- 圆角边框(HTML、CSS)
- Open3d之文件IO
- centos 阿帕奇无法解析php_PHP之校园连接企业之路-2