吴佳鑫的个人专栏

当日事当日毕,没有任何借口

导航

上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 18 下一页

2011年12月12日

遍历Dictionary<K,V>的两种方式

摘要: Dictionary<string,int> things = new Dictionary<string,int>();things.Add(........);things.Add(........);第一种方式:可以使用Keys和values属性迭代集合中的键和值:foreach(string key in things.Keys){// ......}或foreach(int value in things.Values){//....}第二种方式:还可以迭代集合中的各个项,把每个项作为一个 KeyValuePair<K,V>实例来获取。foreac 阅读全文

posted @ 2011-12-12 23:53 _eagle 阅读(6503) 评论(0) 推荐(0) 编辑

2011年12月8日

泛型和泛型约束、泛型接口

摘要: 转自http://www.cnblogs.com/guowenhui/archive/2011/10/25/2223275.html所谓泛型,即通过参数化类型实现在同一份代码上操作多种类型的数据,泛型编程是一种范式的转化(在这里体现为类型的晚绑定),他利用参数化类型,将类型抽象化,从而实现代码的灵活复用,精简代码。注:1.NET参数化类型不是编译(JIT编译)时被实例化,而是运行时被实例化。 2.由微软在产品文档中提出建议,所有的泛型参数名称都以T开头,这是作为一种编码的通用规范。在定义泛型时,可以对客户端代码在实例化类时用于类型参数的类型施加一些限制,如果客户端代码尝试使用某个约束所不允.. 阅读全文

posted @ 2011-12-08 00:13 _eagle 阅读(5290) 评论(0) 推荐(0) 编辑

2011年12月7日

default 关键字的两种用法

摘要: 一。大家非常熟悉的在switch语句中,如果没有任何 case 表达式与开关值匹配,则控制传递给跟在可选 default 标签后的语句。如果没有 default 标签,则控制传递到 switch 以外二。用于泛型定义中在泛型类和泛型方法中,在预先未知以下情况时,如何将默认值分配给参数化类型 T: T 是引用类型还是值类型,如果 T 为值类型,则它是数值还是结构。下面详细说明一下。之所以会用到default关键字,是因为需要在不知道类型参数为值类型还是引用类型的情况下,为对象实例赋初值。考虑以下代码:class TestDefault<T> { public T foo() { T 阅读全文

posted @ 2011-12-07 22:27 _eagle 阅读(7493) 评论(1) 推荐(2) 编辑

?可空类型 和 ??运算符

摘要: ?运算符可以使值类型为null 例如: int ?x = null;??运算符 (允许给可能等于null的表达式提供另一个值)例如:int y = x ?? 1;结果 y为 1,即当x为null时 返回 1即运算符右侧数据,反之返回运算符左侧数据(如果第一个操作数不是null,该运算符就等于第一个操作数,否则该运算符就等于第二个操作数) 说明:有时让值类型为null是很有用的(尤其是处理数据库时),泛型使用 System.Nullable<T>类型提供了使值类型为空的一种方式。例如:system.Nullable<int> nullableInt;int? nullab 阅读全文

posted @ 2011-12-07 00:05 _eagle 阅读(392) 评论(0) 推荐(0) 编辑

2011年12月5日

C#迭代器

摘要: 迭代器概述迭代器是可以返回相同类型的值的有序序列的一段代码。迭代器可用作方法、运算符或 get 访问器的代码体。迭代器代码使用 yield return 语句依次返回每个元素。yield break 将终止迭代。有关更多信息,请参见 yield。可以在类中实现多个迭代器。每个迭代器都必须像任何类成员一样有唯一的名称,并且可以在 foreach 语句中被客户端代码调用,如下所示:foreach(int x in SampleClass.Iterator2){}迭代器的返回类型必须为 IEnumerable、IEnumerator、IEnumerable<T> 或 IEnumerato 阅读全文

posted @ 2011-12-05 00:33 _eagle 阅读(5706) 评论(0) 推荐(1) 编辑

深入foreach工作方式

摘要: IEnumerable 接口负责使用foreach循环。下面说明在foreach中,迭代集合collectionObject的过程如下:1.调用collectionObject.GetEnumerator(),返回一个 IEnumerator引用。这个方法可以通过IEnumerable接口的实现代码来获得,但这是可选的。2.调用所返回的IEnumerator接口的MoveNext()方法。3.如果MoveNext()方法返回true,就使用IEnumerator接口的 Current属性获取对象的一个引用,用于foreach循环.4.重复前面两步,直到MoveNext()方法返回false为止 阅读全文

posted @ 2011-12-05 00:22 _eagle 阅读(262) 评论(0) 推荐(0) 编辑

2011年12月4日

this索引符

摘要: 索引符是一种特殊类型的属性,可以把她添加到一个类的定义中,一提供类似于数组的访问。在Card对象的Cards集合中添加索引符:public class Cards:CollectionBase{.....public Card this[int cardIndex]{get{ return (Card)List[cardIndex]; }set{ List[cardIndex]=value; }}}在访问索引符时,将使用对象名,后跟放在方括号中的索引参数(例如 Cards[0])。这段代码对List属性使用一个索引符.IList.List属性返回的是一个System.Object对象;简单的理 阅读全文

posted @ 2011-12-04 23:46 _eagle 阅读(258) 评论(0) 推荐(0) 编辑

关于CollectionBase

摘要: 今天看了一下C#中接口的东西,发现对CollectionBase(为强类型集合提供抽象基类)中的具体实现原理不是很了解。经过查看一些资料,分析过后得到以下的初步认识。system.Collections.CollectionBase类主要显示的实现ICollection和IList接口和IEnumerable接口。但只提供了一些要求的执行代码,特别是IList的Clear()和RemoveAt()方法,以及ICollection 的 Count属性,如果要使用提供的功能,就需要自己执行其他代码。具体的显示接口实现,可以查看MSDN的相关资料。(注:ICollection主要是实现将自己的项目复 阅读全文

posted @ 2011-12-04 23:35 _eagle 阅读(2665) 评论(2) 推荐(1) 编辑

2011年11月28日

关于System.Collections空间

摘要: System.Collections命名空间包含可使用的集合类和相关的接口,提供了集合的基本功能。该命名空间下的.NET非泛型集合类如下所示:— System.Collections.ArrayList:数组集合类,使用大小可按动态增加的数组实现Ilist接口。— System.Collections.BitArray:布尔集合类,管理位值的压缩数组,该值为布尔值。— System.Collections.Queue:队列,表示对象的先进先出集合。— System.Collections.Stack:堆栈,表示对象的简单的后进先出集合。— System.Collections.Hashtabl 阅读全文

posted @ 2011-11-28 00:10 _eagle 阅读(5326) 评论(0) 推荐(1) 编辑

2011年11月27日

关于override,new 那点事

摘要: 浅析C#中new、override、virtual关键字的区别OO思想现在已经在软件开发项目中广泛应用,其中最重要的一个特性就是继承,最近偶简单的复习了下在C#中涉及到继承这个特性时,所需要用到的关键字,其中有一些关键点,特地整理出来,方便大家查阅。一、在C#中,new这个关键字使用频率非常高,主要有3个功能: a) 作为运算符用来创建一个对象和调用构造函数。b) 作为修饰符。c) 用于在泛型声明中约束可能用作类型参数的参数的类型。在本文中,只具体介绍new作为修饰符的作用,在用作修饰符时,new关键字可以在派生类中隐藏基类的方法,也就说在使用派生类的方法是调用的方法是New关键字新定义出来的 阅读全文

posted @ 2011-11-27 23:57 _eagle 阅读(221) 评论(0) 推荐(0) 编辑

上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 18 下一页