C#入门经典第十二章

原创 2012年03月31日 13:57:57

第12章   泛型(C++的模板)

12.1泛型的概念

在C++中,编译器可以检测出在哪里使用了模板的某个特定类型,例如,模板B的A类型,然后编译需要的代码,来创建这个类型。而在C#中,所有的操作都在运行期间进行。

12.2使用泛型

12.2.1可空类型(nullabletype)

System.Nullable<type>,null,HasValue

System.Nullable<type>=type?

1.  运算符和可空类型

2.  ??空接合运算符(nullcoalescing operator),

Op1??op2; op1==null?op1:op2;

12.2.2 System.Collections.Generic名称空间

     1.List<T>

     List<T>myCollection=new List<T>();

     CollectionBase主要用于向后兼容,使用CollectionBase的唯一场合是更多的控制向类的用户展示的成员。

2.对泛型列表进行排序和搜索

使用泛型接口IComparer<T>和Icomparable<T>

System.Text.StringBuilder:Append(),AppendFormat(),ToString();

Comparison<T>:这个委托类型用于排序方法,其返回类型和参数是int method(T objectA,T obejct B);

Predicate<T>:这个委托类型用于搜索方法,其返回类型和参数是bool method(T targetObject);

3.  Dictionary<K,V>

Dictionary<keyType,valType>things=new Dictionary<keyType,valType>();

Foreach(keyType key in type.Keys)

{}

Foreach(valType key in type.Values)

{}

Foreach(KeyValuePair<keyType,valType>thing in things)

{}

Dictionary<K,V>允许把IComparer<K>接口传递给其构造函数。?

IComparer<T>,IComparable<T>比较

 

12.3定义泛型

12.3.1定义泛型类

Class MyGenericCLass<T>

{

}

不知道T的类型,在类的定义中不能使用它的构造函数,不能使用new T();

1.default关键字:引用null,值:默认值。

innerT1Object=default(T1);

2.约束类型:限制泛型中可使用的数据类型

     WhereT1:constraint1

3.从泛型类中继承

     继承类型封闭,非泛型类继承泛型类,要明确泛型类中的所有类型参数。

4.泛型运算符

     Publicstatic implicit operator List<Animal>(Farm<T> farm)

{}

5.泛型结构

12.3.2定义泛型接口

     InterfaceMyFarmingInterface<T>

     WhereT:Animal

{}

12.3.3定义泛型方法

Public T GetDeafult<T>()

{

Return default(T);

}

12.3.4定义泛型委托

Public delegate T1MyDelegate<tT1,T2>(T2 op1,T2 op2) where T1:T2;

入门有余, 经典不足 — 小评《C#入门经典》

鉴于C#程序设计语言这本Anders写的书就像是语言规格说明, 我推荐大家阅读C#入门经典(Beginning Visual C# 2010)入门. 说实话, 看到这本书的时候, 我稍微叹了口...
  • vagrxie
  • vagrxie
  • 2013年01月11日 07:21
  • 16402

《C#入门经典(第7版)》编写C#程序

两种基本的应用程序类型:控制台应用程序和桌面应用程序 1、开发环境:     Visual Studio      C#6      .NET Framework 4.6     register ...
  • u010590746
  • u010590746
  • 2017年05月21日 15:23
  • 1934

《快学scala》12章练习答案

最近看了看《快学scala》,比较好的点在于这本书每一章后面都有一些练习,可以自己去做一下,对于掌握知识来讲还是不错的(像是以前上学后面的习题一样)。 我不知道哪里有答案,也没有认真找过,就自己做了...
  • qq_20441521
  • qq_20441521
  • 2016年11月20日 16:07
  • 489

操作系统概念(高等教育出版社,第七版)复习——第十二章:大容量存储器的结构

第十二章 大容量存储器的结构 基础知识 磁盘调度 FCFS调度、SSTF调度、SCAN调度、C-SCAN调度、LOOK调度 FCFS调度 先来先服务算法 SSTF调度 最短寻道时间优先法...
  • qq_34791215
  • qq_34791215
  • 2017年06月20日 21:51
  • 100

C#入门经典第6版学习 六

第五章  变量的更多内容 本章内容: 如何在类型之间进行隐式和显式转换 如何创建和使用枚举类型 如何创建和使用结构类型 如何创建和使用数组 如何处理字符串值 枚举:变量类型,用户定义了...
  • thebestleo
  • thebestleo
  • 2016年09月13日 16:56
  • 800

C#入门经典第6版学习 七

5.2  复杂的变量类型 除了这些简单的变量类型外,C#还提供了3个比较复杂(但非常有用)的变量:枚举、结构、数组。 5.2.1  枚举 例Ch05Ex02  定义一个枚举orient...
  • thebestleo
  • thebestleo
  • 2016年09月13日 17:31
  • 1044

C#入门经典(第6版)

首先,必须说明,在学C#之前,已经学习C++有一年了,所以看C#时觉得入门很快,基础篇只看了与C++不同的地方。 刚学C#的时候,装的的是visual studio 2010,想着真么把C++的开发环...
  • fightingyxy
  • fightingyxy
  • 2016年04月21日 21:07
  • 488

快学Scala第12章----高阶函数

本章要点 在Scala中函数是“头等公民”,就和数字一样; 你可以创建匿名函数,通常还会把它们交给其他函数; 函数参数可以给出需要稍后执行的行为; 许多集合方法都接受函数参数,将函数应用到集合中的值;...
  • u010110208
  • u010110208
  • 2016年06月26日 22:42
  • 609

Python核心编程(第十二章)--模块

模块概念: 自我包含并且有组织的代码片段的就是模块 每一个文件都被看作是一个独立的模块,每个模块也可以被看作是一个文件,模块的文件名就是模块的名字加上扩展名.py 一个名称空间就是一个从名称到对象的关...
  • u014380159
  • u014380159
  • 2016年05月31日 15:50
  • 451

13 C# 第十二章 委托

委托概述: 与C/C++中的函数指针类似,把方法用对象封装起来,以便在运行时间接的绑定该方法。 委托的使用: 关键字: delegate public delegate boo...
  • wangzhiyu1980
  • wangzhiyu1980
  • 2013年03月29日 08:38
  • 515
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#入门经典第十二章
举报原因:
原因补充:

(最多只允许输入30个字)