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#学习笔记之集合(入门经典 11.)

集合类的大多功能是通过实现System.Collection命名空间之中的接口而获得的。     1.IEnumerable可以迭代集合中的项。     2.ICollection(继承于IEnu...

<C#入门经典>学习笔记2之控制流程

控制流程控制程序流的两种方法:分支和循环;这两种方法都要用到布尔逻辑布尔运算符 布尔运算符也称关系运算符,包括 ==、!= 、 、 = 异或操作 异或操作: Var1 = Var2 ^...

读书笔记之《C#入门经典》基础篇

总结一些在学习《C#入门经典》一书中的技巧细节以及基础知识点,由于本人是一个objective-c程序员,所以会偶尔碰到C#与objectiv-c比较类似的概念会提醒一下,下面是基础篇:1.主动进行垃...

《C#入门经典》第六版 学习笔记之第九章 定义类

第八章是从概念层讲述了OOP技术,第九章之后则是具体的将第八章内容精讲。如果第八章不好理解,可以带着疑问去看后面的章节。在后面的章节看完后再回头重温第八章。 第九章 定义类 9.1 c#中类的定义 ...

unity经典入门课程之C#基础实例讲解(打砖块实例)

学习untiy最最基础简单的实例,是看泰课的入门视频。 一直觉得,最好的学习方法,要把别人的东西,变成自己的东西,最简单的几行代码也可以学到很多东西。这个工程就是按照视频上做的,找不到素材,随便自己...

C#图形编程入门经典贴

案例中的每行代码值得新手好好琢磨 http://hi.baidu.com/nxlhb/item/df70dcea2b52980f65db0084 像Java一样,C#提供了一整套相当丰富的 类...

c#入门经典笔记

c#中的优先级: 命名空间概念:命名空间是一种逻辑上的划分,而不是物理上的划分。这种划分方法有些类似于文件的存储方式。 ***c#命名规范: 1)类名,方法名和属性名都用Pascal命名法,即所...

C#入门经典学习笔记之数据类型

本人毕业近两年来一直从事嵌入式开发,主要使用C语言进行软件开发。对C++的了解也只是完整了看完了《C++ Primer》以及使用MFC做过几个小程序。不管怎么说也算是对C和C++有些基础。     ...

《C#入门经典》第六版 学习笔记之第十章 定义类成员(1) 10.1成员的定义~10.2类成员的其他方法

10.1 成员的定义 在类一种,也提供该类所有成员的定义——字段、属性、方法。所有成员都有自己的访问级别(可以对比类的访问级别): public——成员可以由任意代码访问。 private——成员只能...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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