泛型类:实用的泛型Singleton类

Singleton模式是最常设计模式的,我们会经常写这类代码.因其基本原理就是保存个静态对象例子,所以我们便能利用泛型写出个通用Singleton类.  代码很简单:public SingletonT  ...{     readonly T _t;     Singleton    ...{      _t = Construct;    }    public T GetInstance ... [阅读全文]

java泛型:Linq 学习(7) 延迟执行 & 查询非泛型集合

本篇介绍Linq延迟执行和查询非泛型集合  延迟执行  从Linq查询过程看不断有新类型、集合构建、释放感觉效率不高但Linq延迟执行机制将大大改善常规操作加载整个数据源导致效率低下状况  举例: void Main{   collection = { 10, 11, 12, 13, 14 };  Console.WriteLine("Begin query collection:" + Date... [阅读全文]

泛型约束:C#泛型new约束

对于约束大家可能有个误解以为使用了约束的后在创建对象时和非泛型版本是致:publicTesterT whereT: { publicTester { t=T;//等同于非泛型版本?例如objecto=object;? } privateTt; }  事实上使用关键字作用只是让编译器在泛型例子化的处检查所绑定泛型参数是否具有无参构造:  TesterSomeType t = TesterSomeT... [阅读全文]

gereric:C#语法学习泛型(gereric)

Stu,("Athrun",26);    t.Show;  }}... [阅读全文]

java泛型:C#泛型秘诀(5.2)

私有思路方法#region 私有思路方法  private void EnsureCapacity( min)  {   num1 = (this.keys.Length 0) ? 4 : (this.keys.Length * 2);   (num1 min)  {  num1 = min;  }  this.InternalSetCapacity(num1, false);  }  //返... [阅读全文]

java泛型:C#泛型秘诀(7)

4.11 在泛型字典类中使用foreach  问题  您希望在实现了. Collections.Generic.IDictionary接口类型枚举元素如.Collections.Generic.Dictionary 或 .Collections.Generic.SortedList  解决方案  最简单思路方法是在foreach循环中使用KeyValuePair结构体:// 创建字典对象并填充. ... [阅读全文]

java泛型:C#泛型秘诀(8完)

4.13 化泛型变量为它们默认值  问题  您泛型类包含个变量它类型和类中定义类型参数样在构造泛型类时您希望这个变量被化为它默认值  解决方案  简单地使用default关键字把变量化为它默认值:public DefaultValueExampleT  {    T data = default(T);    public bool IsDefaultData    {      T temp ... [阅读全文]

泛型接口:泛型--集合接口

9.4 集合接口  .NET Framework为集合枚举和对比提供了两组标准接口:传统(非类型安全)和新泛型类型安全集合本书只聚焦于新类型安全集合接口它更优越  您可以声明些指定了类型ICollection来取代实际类型(如或)以用于接口声明中泛型类型(T)  C员需要注意:C#泛型和C中模板在语法和使用方法上都很相似但是泛型在运行期为其指定类型进行扩展JIT编译器可以为它们区别例子共享段代码从... [阅读全文]

java泛型:泛型--约束

9.5 约束  有时候您必须确保添加进泛型列表中元素拥有某些约束(例如它们从个给定基类继承或它们实现了指定接口)在下面例子中我们实现了个简单可排序单链表链表由多个Node组成每个Node必须保证添加进去元素实现了IComparer接口您可以这样声明:  public NodeT : IComparableNodeT where T : IComparableT  这句代码定义了个泛型Node它操... [阅读全文]

java泛型:泛型--List

类型个典型问题是固定容量如果您预先不知道将容纳多少对象就会冒着给声明太小(溢出)或太大(浪费空间)空间风险  您可能让用户输入数据或从Web站点收集数据当它发现对象(串书值等等)将把它们添加进但您并不知道在这段时间内会收集多少数据固定尺寸并不是个很好选择您并不知道需要多大  List类是个根据需要动态增加尺寸它提供了组有用思路方法和属性用于操作它们中最重要显示在表9-3中  表9-3 List思路... [阅读全文]

泛型排序:构建可反转排序的泛型字典类(1)--雏形

构建可反转排序泛型字典类  前言  前段时间为了查找泛型资料我翻译了OReilly 出版C# Cookbook这本书几个有关泛型章节其中“4.8 反转Sorted List里内容”(见  http://cgbluesky.blog.163.com/blog//2412355820081211016581/ )这节中有个接近1300行代码例子当时看到这个例子吓了跳这是个足以让... [阅读全文]

泛型排序:构建可反转排序的泛型字典类(2)--排序方向

2. 排序方向  你希望ReversibleSortedList类中元素是以TKey(键)顺序进行存储并且它即可以从小排到大也可以从大排到小当然最佳方式就是在添加元素时找到合适位置插入插入后元素就已经按顺序排好在个有序中查找合适插入点这样算法并不困难但FCL已经帮我们实现了而且是采用速度最快 2分查找法(在MSDN中被称为“ 2进制搜索法”)太棒了!它就是:静态思路方法Ar... [阅读全文]

泛型排序:构建可反转排序的泛型字典类(3)--实现元素添加及自动扩展

3. 实现元素添加及自动扩展  您是单位CEO单位占地50亩这几年在你带领下公司不断发展壮大原来50亩地已经不够用公司急需扩大地盘这个现实问题摆在你面前该如何办?到旁边单位抢地?不行现在是法制社会有两个解决方案第是买块50亩地这样你公司就有两个办公地点缺点是不能统管理两个地点员工交流不顺畅第 2是买块100亩地把原来地卖掉公司全部搬到新地点这样做缺点是重建费用太大  我们要构建Reversible... [阅读全文]

泛型排序:构建可反转排序的泛型字典类(4)--IDictionary接口

C#对集合类型有统规范标准它好处不言而喻所有集合类都有些统思路方法和属性这使得学习成本大大降低统规范标准就是通过接口来实现(有关接口如果不熟请参考  http://www.enet.com.cn/eschool/video/c/30.shtml )另方面些类也会直接这些标准接口使得我们写出来类有更好兼容性最典型例子莫过于IEnumerable接口只要实现了它就可以使用foreach语句进行  我们... [阅读全文]

java泛型:构建可反转排序的泛型字典类(6)--实现IDictionary接口中的Keys和Values属性

完整代码下载:http://file.ddvip.com/2008_10/1224750068_ddvip_5023.rar  6. 实现IDictionary接口中Keys和Values属性  现在我们可以着眼于IDictionary接口实现第4节中专门针对这个接口做了个最简化例子我们来回顾下它是如何实现IDictionary接口中Keys和Values属性public ICollection ... [阅读全文]

java泛型:构建可反转排序的泛型字典类(5)--实现IEnumerable> 接口

下载完整代码: http://file.ddvip.com/2008_10/1224750278_ddvip_8158.rar   5. 实现IEnumerableKeyValuePairTKey, TValue接口  我们先来看看ReversibleSortedList类定义:public ReversibleSortedListTKey, TValue :    IDictionaryTKe... [阅读全文]

泛型排序:构建可反转排序的泛型字典类(8)--实现IDictionary接口

完整代码下载:http://file.ddvip.com/2008_10/1224750546_ddvip_1916.rar  8. 实现IDictionaryTKey, TValue接口  由于前面实现了IDictionary接口现在实现IDictionaryTKey, TValue也就没什么困难了照葫芦画瓢  首先改变类声明:public ReversibleSortedListTKey, ... [阅读全文]

泛型排序:构建可反转排序的泛型字典类(7)--实现IDictionary接口

完整代码下载:http://file.ddvip.com/2008_10/1224750705_ddvip_7441.rar  7. 实现IDictionary接口  前面做了很多努力现在终于可以实现IDictionary接口了当然的所以要先实现它目的还是为了的前留下点遗憾:在foreach中使用DictionaryEntry访问集合中元素  需要注意由于ReversibleSortedList类... [阅读全文]

泛型排序:构建可反转排序的泛型字典类(9完)--完善

下载完整代码:http://file.ddvip.com/2008_10/1224750862_ddvip_7358.rar  9. 完善  大楼已经盖好剩下工作就是装修装修好就可以入住了从本文题目得知这是个可反转排序集合类但我们只实现了降序插入功能如果希望把升序转换为降序该如何办呢?此例解决思路方法是声明个代表排序方向属性Comparer并加入个sort思路方法sort思路方法时根据Compar... [阅读全文]

讲解C#泛型秘诀(1)

4.0 介绍  泛型个期待已久功能随着C# 2.0版本编译器到来最终出现泛型是个非常有用功能它使得您代码变得精简而富有效率这些将在秘诀4.1进行详细讲述泛型到来使得您可以编写更为强大应用但这需要正确地使用它如果您考虑把ArrayListQueueStack和Hashtable对象转变为使用相应泛型版本可以阅读秘诀4.44.5和4.10当您阅读过后会发现这种转变不定简单甚至有可能会不再打算进行转变 ... [阅读全文]

java泛型:C#泛型秘诀(2)

4.3 获取泛型类型  问题  您需要在运行时获得个泛型类型例子Type对象  解决方案  在使用typeof操作符时提供类型参数;使用类型参数例子化泛型类型用GetType思路方法  声明个般类型和个泛型类型如下:public Simple{  public Simple  {  }}  public SimpleGenericT{  public SimpleGeneric  {  }} ... [阅读全文]

java泛型:C#泛型秘诀(3)

4.5 使用相应泛型版本替换Stack和Queue  问题  您希望通过将所有Stack和Queue对象替换为相应泛型版本以提高应用效率并使得代码更易于使用当结构体或其他值类型存储在这些数据结构中时会导致装箱/拆箱操作这时就需要这么做  解决方案  使用.Collections.Generic.Stack和.Collections.Generic.Queue对象来替换现有.Collections.... [阅读全文]

java泛型:C#泛型秘诀(4)

4.6 链表实现  问题  您需要链表数据结构这样就可以很容易地添加和删除元素  解决方案  使用泛型LinkedListT类下面思路方法创建了个LinkedListT类并往链表对象中添加节点然后使用了几种思路方法从链表节点中获得信息public void UseLinkedList  {    // 创建个LinkedList 对象.    LinkedListTodoItem todoLis... [阅读全文]

java泛型:C#泛型秘诀(5.1)

4.8 反转Sorted List里内容  问题  您希望在和列表类型中可以反转sorted list里内容同时又维持SortedList和SortedListT类原来功能无论是SortedList还是泛型SortedListT类都直接提供了完成这个功能思路方法而又不需要重填列表  解决方案  ReversibleSortedListTKey, TValue类提供了这些功能它基于SortedLis... [阅读全文]

java泛型:C#泛型秘诀(5.3)

    Nested Types#region Nested Types  Enumerator K, V#region Enumerator K, V  [Serializable, StructLayout(LayoutKind.Sequential)]  private struct EnumeratorK, V : IEnumeratorKeyValuePairK, V, IDisposa... [阅读全文]

java泛型:C#泛型秘诀(6)

4.9 使用泛型创建只读集合  问题  您希望类中个集合里信息可以被外界访问但不希望用户改变这个集合  解决方案  使用ReadOnlyCollectionT包装就很容易实现只读集合类例子如Lottery类包含了中奖号码它可以被访问但不允许被改变:public Lottery  {    // 创建个列表.    List _numbers = null;    public Lottery  ... [阅读全文]

用泛型实现链表:采用C#泛型实现数据库的间的切换

最近做个项目我最开始选用是 MySql 5.0 数据库项目提交的后对方要求换成 MS SQLServer 2000还好数据层操作基本采用是标准SQL语句也未使用存储过程于是将原有数据接入层代码改写成泛型类只改了不到百行代码具体SQL操作语句句未动便实现了数据库的间切换下面简述:  数据库不是很复杂因此我采用了两个类:  (1) DataProvider 泛型类public DataProvide... [阅读全文]

泛型使用实例:通过例子学习C#开发中的泛型

C#中所谓泛型:即通过参数化类型来实现在同份代码上操作多种数据类型泛型编程是种编程范式它利用“参数化类型”将类型抽象化从而实现更为灵活复用  C#泛型赋予了代码更强类型安全更好复用更高效率更清晰约束  C#泛型机制介绍  C#泛型能力由CLR在运行时支持区别于C编译时模板机制和java编译时“搽拭法”这使得泛型能力可以在各个支持CLR语言的间进行无缝... [阅读全文]

用泛型实现链表:使用C# 2.0泛型实现单例模式重用

介绍  很多有着区别开发背景得人都会比较熟悉单例模式他们会发现每次他们要创建个区别单例类时候都不得不写同样得代码使用新C# 2.0泛型可以实现只写次同样得代码  使用 C# 2.0 泛型来完成单例模式重用  使用 C# 2.0 泛型使得实现我所说"单例提供者"成为可能这是个可用来创建单例类例子确不需要为每个特定类重写单例模式代码可重用类这样分离出单例结构代码将有利于保持按单例模式使用类或不按单例模... [阅读全文]

java泛型:Visual C#泛型学习的泛型介绍

什么是泛型  种类型占位符或称的为类型参数我们知道在个思路方法中个变量值可以作为参数但其实这个变量类型本身也可以作为参数泛型允许我们在时候再指定这个类型参数是什么在.net中泛型能够给我们带来两个明显好处是——类型安全和减少装箱、拆箱  类型安全和装箱、拆箱  作为种类型参数泛型很容易给我们带来类型安全而在以前在.net1.1中我们要实现类型安全可以这样做 :  //假设你... [阅读全文]
1 共1条 分1页