1.方法组转换
c#2支持一个从方法组到兼容委托类型的隐式转换,即如:
button.click+=new eventhandler(logevent)可以写成
button.click+=logevent。
2.匿名函数的闭包和捕获外部变量
闭包:执行一段代码所需要的上下文。
被捕获的外部变量:在匿名方法内部使用的外部变量。被捕获的是变量本身,而不是变量的值。
在此这段代码即匿名方法。
被捕获的外部变量不存储在栈上,而是创建一个额外的类来容纳(this除外)。
循环外部的captured variable被实例化一次,而在循环内部实例化各自的captured variable(C#5中循环外部的captured variable也被分别实例化)。
3.泛型
类型约束:
引用类型约束:where  T : class
值类型约束:where  T : struct
构造器约束:T : new() 用来约束拥有一个无参构造函数的类型:所有值类型,非静态非抽象没有显式构造函数的类,显式声明了无参构造函数的非抽象类
转换类型约束:类型实参必须可以通过某种方式隐式转换为该约束类型(类型参数约束:一个类型可以隐式转换为另一类型class Sample<T,U> where T : U)
类型推断只适用于泛型方法。
如果没有类型约束,==,!=可以使用,但仅限于和NULL的比较;如果被约束为值类型,则不能使用==,!=;如果是简单引用类型,则进行简单的比较;如果被约束了派生自冲在了==和!=的类型,这些重载将被调用(如果类型参数本身也实现重载,这种重载并不会被调用,因为编译器对此一无所知,编译器在编译未绑定的泛型类型时就解析好了所有函数重载)。
四种泛型比较接口:
IComparer<T>、IComparable<T>用来排序(判断大于小于等于),IEqualityComparer<T>、IEquatable<T>用来判断相等性;
IComparer<T>、IEqualityComparer<T>用来比较两个值,IComparable<T>、IEquatable<T>用来比较其它值与它自身。
4.迭代器
    首先执行MoveNext();之后执行迭代器块的代码;获取Current的值不执行任何代码;执行到yield return后停止;执行下一个MoveNext(),如果返回值为false则停止迭代,否则继续,而不是在最后的yield return处结束(所以如果我们想要finally块的代码被执行,就需要一个 yield break,不过在我们直接使用foreach时不会遇到这个问题,因为foreach最后会调用一个Dispose(),而这会触发finally的执行)。
 
 
 

C# in Depth阅读笔记2:C#2特性的更多相关文章

  1. C# in Depth阅读笔记1:C#1特性

    1.委托 委托是对包含返回值和参数的行为的一种封装,类似于单一方法的接口. 委托是不易变的(就像string),system.delegate下的combine和remove方法都只能产生一个新的委托 ...

  2. C# in Depth阅读笔记3:C#3特性

    1.隐式类型 var a=new Dictionary<string ,list<person>>();可以简化代码,增强可读性. 2.简化初始化 (1)设置简单属性 Pers ...

  3. Mongodb Manual阅读笔记:CH5 安全性

    5 安全性 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读 ...

  4. 阅读笔记 1 火球 UML大战需求分析

    伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本   <火球 UML大战需求分析>,首先 ...

  5. [阅读笔记]Software optimization resources

    http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++   7. The efficiency of differe ...

  6. 《uml大战需求分析》阅读笔记05

    <uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...

  7. <<UML大战需求分析>>阅读笔记(2)

    <<UML大战需求分析>>阅读笔记(2)> 此次读了uml大战需求分析的第三四章,我发现这本书讲的特别的好,由于这学期正在学习设计模式这本书,这本书就讲究对uml图的利用 ...

  8. uml大战需求分析阅读笔记01

    <<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...

  9. Hadoop阅读笔记(七)——代理模式

    关于Hadoop已经小记了六篇,<Hadoop实战>也已经翻完7章.仔细想想,这么好的一个框架,不能只是流于应用层面,跑跑数据排序.单表链接等,想得其精髓,还需深入内部. 按照<Ha ...

随机推荐

  1. ID3决策树算法原理及C++实现(其中代码转自别人的博客)

    分类是数据挖掘中十分重要的组成部分.分类作为一种无监督学习方式被广泛的使用. 之前关于"数据挖掘中十大经典算法"中,基于ID3核心思想的分类算法C4.5榜上有名.所以不难看出ID3 ...

  2. wireshark 过滤条件汇总

    原文地址:http://blog.const.net.cn/a/9340.htm 一.针对wireshark最常用的自然是针对IP地址的过滤.其中有几种情况: (1)对源地址为192.168.0.1的 ...

  3. 全国计算机等级考试二级教程-C语言程序设计_第2章_C程序设计的初步知识

    正负号与被除数一致. 3 % (-5) == 3 (-3) % 5 == -3 不用求余运算符,求出余数. int x, y; 答:x - x / y * y; const int i = 10; c ...

  4. Unity 之 Redux 模式(第二篇)—— Rigidbody 改造,摄像机控制

    作者:软件猫 日期:2016年12月8日 转载请注明出处:http://www.cnblogs.com/softcat/p/6144041.html 上一篇文章中存在一个很严重的问题,首先我们先让 M ...

  5. 一个月AS2.0总结。

    来这家公司一个月了,从最初学习它的木块,到流程,到组件,到改动,到自己做. 感觉好快. 1.AS2.0确实比較3.0差距太大.假设不是公司必须使用2.0,我是真不想使用. 2.代码重用性差.相同的代码 ...

  6. 微信内移动前端开发抓包调试工具fiddler使用教程

    在朋友圈看到一款疯转的H5小游戏,想要copy,什么?只能在微信里打开?小样,图样图森破,限制了oauth.微信浏览器内打开,照样能看你源码~ 使用fiddler来抓包 需要先做一些简单的准备工作: ...

  7. OpenGL鼠标旋转图像

    (鼠标旋转功能) #include <iostream> using namespace std; #include<gl/glut.h> GLfloat transx,tra ...

  8. dede调取文章内容的第一张图片

    dede调用文章第一张图片(非缩略图)的实现方法 这篇文章主要是介绍dede调用文章第一张图片的实现代码,需要的朋友可以参考下 需要进行两个操作 第一步,修改include/extend.func.p ...

  9. mysql性能优化学习笔记(2)如何发现有问题的sql

    一.使用mysql慢查询日志对有效率问题的sql进行监控      1)开启慢查询       show variables like ‘slow_query_log’;//查看是否开启慢查询日志   ...

  10. lua学习笔记(2)-常用调用

    assert(loadstring("math.max(7,8,9)"))dofile("scripts/xxx.lua")math.floor()math.r ...