欢迎光临极品网,更多、更新的资源信息尽在Jpinw.Com!本站所有信息资源每日更新新的内容,请大家继续关注www.Jpinw.com!如果觉得本站还不错,对您有帮助,别忘了向您的朋友推荐本站!请记好本站网址:http://www.Jpinw.com,网站发展靠大家多多的支持!!!

极品网 极品课件 极品论文 极品文学 极品游戏 极品美容 极品手机资源 极品股票

#
免费资源: 免费域名 | 免费空间 | 免费推广 | 免费邮箱 | 免费硬盘 | 免费论坛 | 免费留言 | 免费统计 | 在线投稿 | 更多...
电脑学院: 操作系统 | 安全相关 | 网页设计 | 编程开发 | 建站经验 | 服务器类 | 黑客攻防 | 菜鸟入门 | 教你网赚 | 更多...
文章导航: 网赚学堂 | 网赚秘笈 | 网赚三维 | 网赚先锋 | 网赚资讯 | 感悟网赚 | 众生百态 | 经典美文 | 范文中心 | 更多...
图酷天下: 时事图酷 | 娱乐图酷 | 搞笑图酷 | 时尚图酷 | 体育图酷 | 另类经典 | 论文资源 | 课件下载 | 文学知识 | 更多...

您现在的位置: 极品网 >> 电脑学院 >> 编程开发 >> C#VBJAVA >> 教程正文

C#2.0 Specification(泛型一)            【字体:
C#2.0 Specification(泛型一)
作者:佚名    教程来源:不详    点击数:    更新时间:2008-6-4    

 








C#2.0 Specification(泛型一)。
  这篇文章是翻译的微软的技术文章.供学习c#的朋友参考,请勿用于商业目的。http://msdn.microsoft.com/vcsharp/team/language/default.ASPx
由于这一章非常长可能需要分几篇:)
20.泛型
20.1泛型类声明
泛型类声明是一个需要提供类型参数以形成实际类型的类的声明。



类声明可以有选择地定义类型参数。

class-declaration: (类声明)

attributesopt class-modifiersopt class identifieropt type-parameter-listopt class –baseopt type-parameter-constraints-clauseopt class-body;opt (特性可选 类修饰符可选 类标识符可选 类型参数列表可选 基类可选 类型参数约束语句可选 类体; 可选 )

除非提供了类型参数列表,类声明可以不提供类型参数化约束语句。

提供了类型参数列表的类声明是一个泛型类声明。此外,任何嵌入到泛型类声明或泛型结构声明中的类,自身是一个泛型类声明,因为必须提供包含类型的类型参数以创建构造类型(constructed type);

泛型类通过使用构造类型而被引用(§20.5)。给定泛型类声明

class List<T>{}

这是构造类型的一些例子,List<T>,List<int>和List<List<string>>。构造类型可以使用一个或多个参数,例如List<T>被称为开放构造类型(open constructed type)。不使用类型参数的构造类型,例如List<int>被称为封闭构造类型(closed constructed type)。



泛型类型不可以被“重载”;也就是说,和普通类型一样在一个作用域内,泛型类型必须被唯一地命名。





class C{}

class C<V>{}//错误,C定义了两次

class C<U,V>{}//错误,C定义了两次

然而在非限定类型名字查找(§20.9.3)中使用的类型查找规则和成员访问(§20.9.4),确实考虑到了类型参数的个数。

20.1.1类型参数
类型参数可以在一个类声明上提供。每个类型参数是一个简单的标识符,它指示了用来创建一个构造类型的类型参数的占位符。类型参数是在后面将要被提供的类型的形式占位符。相反,类型参数§20.5.1)只是在构造类型被引用时,实际类型的一个替代。



type-parameter-list:(类型参数列表:)

<type-parameters> (<类型参数>)

type-parameters:(类型参数:)

type-parameter(类型参数)

type-parameters type-parameter(类型参数,类型参数)

type-parameter:(类型参数:)

attributesopt identifier(特性可选 标识符)



在类声明中的每个类型参数在类的声明空间(§3.3)定义了一个名字。由此,它不能和另一个类型参数或在类中声明的成员有同样的名字。类型参数不能和类型自身有同样的名字。

在一个类中的类型参数的作用域(§3.7),包括基类 、 类型参数约束语句和类体。不像类的成员,它没有扩展到派生类。在其作用域之内,类型参数可以被用作一个类型。

type(类型):

value-type(值类型)

reference-type(引用类型)

type-parameter(类型参数)

由于类型参数可以被许多不同的实际类型实参所实例化,类型参数与其他类型相比将略微有一些不同的操作和限制。包括如下内容。

类型参数不能用于直接声明一个基类型或者接口
对于在类型参数上的成员查找规则,如果约束存在,则依赖于应用到该类型参数的约束。更详细地说明参看§20.7.4。




类型参数可行的转换依赖于应用到该类型参数上的约束(如果有的话)。详细地说明参看§20.7.4。
字面null不能被转换到由类型参数所给定的类型,除非类型参数是由一个类约束(§20.7.4)所约束。然而可以使用一个默认值表达式(§20.8.1)代替。此外,由一个类型参数给定的类型的值可以使用“==”和“!=”(§20.8.4)与null进行比较。
如果类型参数通过一个构造函数约束(constructor-constraint)(§20.7)而约束,new表达式只能用过一个类型参数而被使用。
类型参数不能用于特性内的任何地方。
类型参数不能用于成员访问,或者表示一个静态成员或者嵌套类型的类型名字(§20.9.1、§20.9.4)。
在不安全代码中,类型参数不能被用作托管类型(§18.2)。
作为一种类型,类型参数纯粹只是一个编译时构件。在运行时,每个类型参数被绑定到运行时类型,它是通过泛型类型声明所提供的类型实参所指定的。为此,在运行时,使用类型参数声明的变量类型是一个封闭类型(closed type)(§20.5.2)。所有语句和表达式在运行时执行所使用的类型参数,都是由那个参数作为类型实参而提供的实际类型。

20.1.2实例类型
每个类声明都有与之关联的构造类型,即实例类型(instance type)。对于一个泛型类声明,实例类型通过创建一个来自于类型声明的构造类型(§20.4)而形成,它使用对应于类型参数的每一个类型实参。由于实例化类型使用类型参数,在类型参数作用域内(类声明之内),它是唯一有效的。实例类型在类声明中是this的类型。对于非泛型类,实例类型只是一个声明类型。下面展示了几个声明类,以及它们的实例类型。

class A<T> //实例类型:A<T>

{

class B{} //实例类型:A<T>.B

class C<U>{} //实例类型:A<T>.C<U>

}

class D{} //实例类型:D



20.1.3基类规范
在类声明中指定的基类可以是一个构造类型(§20.5)。一个基类其自身不能是一个类型参数,但在其作用域内可以包含类型参数。





class Extend<V>: V{}//错误,类型参数被用作基类

泛型类声明不能使用System.Attribute作为直接或间接基类。

在一个类声明中指定的基接口可以是构造接口类型(§20.5)。基接口自身不能是类型参数,但在其作用域内可以包含类型参数,下面的代码演示了如何实现和扩展

[1] [2] 下一篇

 

教程录入:admin    责任编辑:admin 
  • 上一篇教程:

  • 下一篇教程:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关教程
    C#:Web Service异常处理
    C#:获得文件版本信息及只读文
    C#:文件的按行读/写及文件目
    C#2.0 Specification(泛型二
    C#2.0 新特性探究(二) 委托与
    C#2.0的特性
    C#2.0简介
    C#2.0语言规范(三)匿名方法
    C#2.0语言规范(四)迭代器
    C#2.0语言规范(五)不完全类
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    极品网
    | 设为首页 | 加入收藏 | 友情链接 | 版权声明 |
    极品网

    Copyright 2006 Jpinw.com 极品网

    备案号:浙ICP备07010375号

    极品网