[.NET自我学习]Delegate 泛型
阅读导航
1. 委托Delegate
- 继承自MulticastDelegate
- 声明委托定义签名:
public delegate int DemoDelegate(int num1, int num2);
- 使用相同签名的方法实例化委托:
int Sum(int input1, int input2){ return input1 + input1; }
DemoDelegate demo1 = Sum; - 使用匿名方法实例化委托:
DemoDelegate demo2 = delegate(int input1, int input2)
{
return input1 * input2;
} 使用lambda表达式实例化委托:
DemoDelegate demo3 = (int input1, int input2) => input1 - input2;
调用方法:
int resultSum = demo(, ); // result: 30
int resultMultiply = demo(, ); // result: 200
int resultMinus = demo(, ); // result: –10
2. 泛型
- 命名空间: System.Collections.Generic
- 使用T作为参数放在尖括号中:
public class DemoGeneric<T>{} 使用List<T>不需要装箱操作和强制类型转换,效率高,编译时检查类型T
约束:
public class DemoGeneric<T> where T : struct {} // 类型参数必须为值类型
public class DemoGeneric<T> where T : class {} // 类型参数必须为引用类型(如类、接口、委托、数组类型)
public class DemoGeneric<T> where T : new() {} // 类型必须具有无参public构造函数, 与其他约束组合使用必须最后制定
public class DemoGeneric<T> where T : U {} // 类型参数必须为U提供的参数或派生自U提供的参数可以是用反射获取泛型类型
[.NET自我学习]Delegate 泛型的更多相关文章
- ios学习-delegate、传值、跳转页面
ios学习-delegate.传值.跳转页面 1.打开xcode,然后选择ios--Application--Empty Application一个空项目. 项目目录: 2.输入项目名称以及选 ...
- C#学习之泛型继承和静态成员
想要理解这里有必要先将泛型类学习充分.这里讲解的是泛型类继承类的类型和静态成员. 在前面C#学习之泛型中,创建的LinkList<T>类实现了IEnumerable<T>接口. ...
- UFLDL教程笔记及练习答案三(Softmax回归与自我学习***)
:softmax回归 当p(y|x,theta)满足多项式分布,通过GLM对其进行建模就能得到htheta(x)关于theta的函数,将其称为softmax回归. 教程中已经给了cost及gradie ...
- java知识体系(自我学习中)
java自我学习知识体系
- Java 理论和实践: 了解泛型 识别和避免学习使用泛型过程中的陷阱
Brian Goetz (brian@quiotix.com), 首席顾问, Quiotix 简介: JDK 5.0 中增加的泛型类型,是 Java 语言中类型安全的一次重要改进.但是,对于初次使用泛 ...
- .net学习之泛型、程序集和反射
一.泛型1.CLR编译时,编译器只为MyList<T>类型产生“泛型版”的IL代码——并不进行泛型的实例化,T在中间只充当占位符.例如:MyList 类型元数据中显示的<T> ...
- Java编程思想学习(十一) 泛型
1.概要 generics enable types (classes and interfaces) to be parameters when defining classes, interfac ...
- 学习Swift -- 泛型
泛型 泛型代码可以让你写出根据自我需求定义.适用于任何类型的,灵活且可重用的函数和类型.它的可以让你避免重复的代码,用一种清晰和抽象的方式来表达代码的意图. 泛型所解决的问题 先来看一个交换两个int ...
- Java学习之——泛型
1.概要 generics enable types (classes and interfaces) to be parameters when defining classes, interfac ...
随机推荐
- Linux下GDB调试
GDB 是一个强大的命令行调试工具.大家知道命令行的强大就是在于,其可以形成执行 序列,形成脚本.UNIX 下的软件全是命令行的,这给程序开发提供了极大的便利,命令行 软件的优势在于, 他们可以非常容 ...
- CSS实现完美垂直居中
之前看到很多人一直都问这个问题,不过当时我没当一回事,因为在 CSS 中要垂直居中,多数是在有高度的情况下,或者容器高度不定的情况下才用,看上去比较舒服,而且实现的方法也不少,不一定要拘泥于和 tab ...
- JS-Number
Number 是对原始数据的封装 语法: var myNum=new Number(value);//返回一个新创建的 Number 对象 var myNum=Number(value);//把自己的 ...
- Bomb
Description The counter-terrorists found a time bomb in the dust. But this time the terrorists impro ...
- ArcGIS Server 10 Java 版的Rest服务手动配置方法
Java版的Manager中发布的服务默认只发布了该服务的SOAP接口,而REST接口需要用户在信息服务器,如Tomcat. Apache.WebLogic等中手工配置.由于在Java版的Server ...
- 优质IT资源分享社区www.itziyuan.top
你好,我是“优质IT资源分享社区(www.itziyuan.top)”的建设者,同时也是一名普通的IT的热爱者. 首先,我介绍一下网站所收录的教程分类: 基础编程语言: C,C++,C#,Java ...
- easyUI datagraid的列排序
在给datagraid做多列排序时请注意: 首先,做的是后台排序,那么需要设置: remoteSort:'true', 然后,不要添加 multiSort:'true',这个是多列一起排序无法实现.. ...
- Block循环引用问题研究
自从苹果在objc中添加Block功能支持以后已经过了很久.目前网上对于Block的使用有很多介绍.不过对于Block的内存管理问题,则是众说纷纭.再加上objc开始使用ARC以后,对于Block的内 ...
- 通过inflate获取布局,设置layoutparams无效
给ll——addtiem当设置layoutparams无效时,试着修改上一个布局的属性
- (转)EntityFramework之领域驱动设计实践
EntityFramework之领域驱动设计实践 - 前言 EntityFramework之领域驱动设计实践 (一):从DataTable到EntityObject EntityFramework之领 ...