搜狐首页 - 新闻 - 体育 - 娱乐 - 财经 - IT - 汽车 - 房产 - 女人 - 短信 - 彩信 - 校友录 - 邮件 - 搜索 - BBS - 搜狗 
搜狐首页 >> IT频道 >> 数码天下 >> 网狐教程-搜狐IT >> 程序开发-网狐教程-搜狐IT >> C语言
揭开第二代.NET面纱 Visual C# 2005抢先预览
IT.SOHU.COM  2004-07-22 10:21  作者: PETERY  转自: 天极网
页面功能 【我来说两句】【我要“揪”错】【推荐】【字体: 】【打印】 【关闭

  注意:本文是在产品发行前编写的,因此无法保证内文细节与实际产品完全相符。本文的信息仅代表文件出版时产品的情况,只可作为计划时参考。文件中信息如有变更恕不另行通知。
 
  简介

  Microsoft Visual Studio 的下一版 (代号为 Whidbey) 明显增强了 C# 的功能,包括创新的语言结构、新编译器功能、大幅提升了开发人员的生产力、加强调试功能等等。在程序语言创新功能方面,C# Whidbey 发行版本支持泛型(Generics)、iterator (迭代器)、部份类型,以及匿名方法。 Whidbey 的新编译器功能可让开发人员直接在代码中禁用编译器警告,或验证 ECMA/ISO 一致性。 Whidbey 也将具有数种生产力增强功能,包括重构 (refactoring)、 代码展开、代码格式化、增强 IntelliSense 等许多功能。调试功能也有加强,新功能包括增强的 datatips (信息快显)、调试的可视化工具、设计时的表达时式评估等等。 本文仅概括地介绍 Whidbey 中的新功能,我们将继续加入客户所需的新功能。

  语言创新功能

  泛型

  泛型是 Whidbey 中 C# 语言最主要的新功能之一。 C# 的泛型可允许类、结构、接口与方法,依其存储与处理的数据类型加以参数化。 泛型所以好用,因为许多常见类别与结构,可依其存储与处理的数据类型加以参数化。这些称为“泛型类声明”和“泛型结构声明”。同样地,许多 接口定义合约,可依其处理的数据类型加以参数化。这些称为“泛型接口声明”。方法也可依其类型加以参数化,以便实现“泛型算法”,这些称之为“泛型方法”。

  在下面的例子中,我们创建了一个 Stack 泛型类声明,其中指定了类型参数,叫做 ItemType,在声明之后的尖括弧中予以声明。 泛型 Stack 类实例不会强迫在对象之间来回转换,而是接受创建时的类型,并不加转换地存储该类型的数据。 ItemType 类型参数的作用有如占位符,直到使用时才指定实际 类型。请注意,ItemType 用于内部项目数组的元素类型、Push 方法的参数类型,以及 Pop 方法的返回类型:

public class Stack
{
 private ItemType[ ] items;
 public void Push(ItemType data) {...}
 public ItemType Pop() {...}
}

  如下列简短例子所示,使用 Stack 泛型类声明时,可指定泛型类所用的实际类型。 在此种情况下,我们通过在名称后的尖括号内 指定“类型形参”来要求 Stack 使用 int 类型:

Stack<int> stack = new Stack<int>();
stack.Push(3);
int x = stack.Pop();

  这样,我们便创建了一个新的“构造类型”Stack<int>,其中 Stack 声明内部的每个 ItemType 将被取代为提供的 int 类型形参。事实上,建立 Stack<int> 的新实例时,为了存储效率的考虑,项目数组的原本存储类型现在为 int[],而非 object[]。此外,当将 int 推压到堆栈时,不再需要对它进行转换。甚至,从堆栈取出项目时,不再需要明确地将它转换为适当的类型,因为 Stack 这个特别的类在其数据结构中,将 int 以其原本的类型存储。

  若要存储非 int 项目至 Stack,必须由 Stack 建立不同的构造类型,并指定新类型形参。假如有一个简单的 Customer 类,且我们希望使用 Stack 来存储。要达到这个目的,只需使用 Customer 类作为 Stack 的类型形参,就可轻松地重复使用代码:

Stack<Customer> stack = new Stack<Customer>();
stack.Push(new Customer());
Customer c = stack.Pop();

  当然,一旦建立了以 Customer 为类型形参的 Stack,则仅可以存储 Customer 对象 (或派生自 Customer 类的对象)。 泛型提供“强类型检验”(strong typing),亦即我们无法再以下列不当方式将整数存储 在 stack 中:

Stack<Customer> stack = new Stack<Customer>();
stack.Push(new Customer());
stack.Push(3); // compile-time error
Customer c = stack.Pop(); // no cast required

  部分类型

  部份类型允许单一类型,如一个类,分散至多个文件中。此功能对 Visual Studio 等代码生成器最为有用,它能将生成的代码与使用用者编写的代码分开存储在不同的文件中。藉由此方式,设计工具可以轻易地剖析与重新产生 代码,而不会影响到用户所编写的代码。例如:

// Form1Designer.cs
public partial class Form1: System.Windows.Forms.Form
{
 // 设计器代码
 void InitializeComponent() { ... }
}

// Form1User.cs
public partial class Form1
{
 // 用户代码
 void Mouse_Click(object sender, MouseEventArgs e) { ... }
}
[1] [2] [3] [4] [5] [6] [7] [8下一页 
页面功能 【我来说两句】【我要“揪”错】【推荐】【字体: 】【打印】 【关闭




ChinaRen - 搜狐招聘 - 网站登录 - 帮助中心 - 设置首页 - 广告服务 - 联系方式 - 保护隐私权 - About SOHU - 公司介绍
Copyright © 2005 Sohu.com Inc. All rights reserved. 搜狐公司 版权所有

相关链接
  • 编程宝典:C语言初学者易踩十八颗“地雷”(07/16 16:25)
  • 编程宝典:C语言初学者易踩十八颗“地雷”(07/16 16:25)
  • 编程宝典:C语言初学者易踩十八颗“地雷”(07/16 16:23)
  • 编程宝典:C语言初学者易踩十八颗“地雷”(07/16 16:25)
  • 编程宝典:C语言初学者易踩十八颗“地雷”(07/16 16:25)
  • 编程宝典:C语言初学者易踩十八颗“地雷”(07/16 16:25)
  • 编程宝典:C语言初学者易踩十八颗“地雷”(07/16 16:25)
  • 编程宝典:C语言初学者易踩十八颗“地雷”(07/16 16:25)
  • 编程宝典:C语言初学者易踩十八颗“地雷”(07/16 16:25)
  • 编程宝典:C语言初学者易踩十八颗“地雷”(07/16 16:25)

  •  ■ 我来说两句
    用  户:        匿名发出:
    请各位遵纪守法并注意语言文明。
     
    *经营许可证编号:京ICP00000008号
    *《互联网电子公告服务管理规定》
    *《全国人大常委会关于维护互联网安全的规定》
    短信内容:
    手 机
    自写包月5分钱/条 更多>>
    搜狐天气为你抢先报! 魔力占卜姻缘一线牵!
    金币不是赚的是抢的! 爱情玄机任由你游戏!
    猪八戒这样泡到紫霞! 帅哥一定要看的宝典!
    你受哪颗星星的庇护? 萨达姆最新关押照片!
    精彩彩信
    [和弦]欧若拉 一生有你
    沧海一声笑
    [音效]挪威的森林
    爆铃 MP3 G点图 动画
    [和弦]童话 你到底爱谁
    [原唱]一千年以后 断点
    [爆笑音效]赚钱拉 野花
    [串烧]张韶涵 潘玮柏
    精彩短信
    [和弦]小薇 好心分手
    [音效]当当当当 忘记


    搜狐商城
    ·家电|品牌风扇新品热销
    ·音乐|秦海璐幸福回味
    ·图书|《眼镜蛇事件》
    更多...