| 加入收藏| 设为首页| 联系我们

首页 站长学习 站长之家 源码下载 建站素材 书籍教程 常用工具
 您现在的位置: 动力中国 >> 网络编程 >> C#教程 >> 文章正文  
 Orcas版C#3.0的新特性
 

Orcas版C#3.0的新特性

http://www.domcn.org  文章来源:本站原创  点击数:

  关键字:Orcas版C#3.0的新特性

  自从微软March CTP版本的Visual Studio和.NET Framework “Orcas”发布以来,许多博客作家都在考察和评论这一版本在run-time macros和code metrics等方面的新特性。

  近日,微软ASP.NET 和Ajax开发部的头脑Scott Guthrie又在其博客中发布了C# 3.0的一些新特性。其文中重点提及的C#3.0的新特性如下:

  Automatic properties——自动属性

  Orcas 版的C#可以自动建立私有域和默认的get/set函数,而不必由用户手工声明私有域和手工建立get/set函数。如:我们使用以前的C#语言编程时,需要手工书写如下代码段:

以下是引用片段:
public class Person ...{

private string _firstName;

private string _lastName;

private int _age;

public string FirstName ...{

get ...{

return _firstName;

}set ...{

_firstName = value;

}

}

public string LastName ...{

get ...{

return _lastName;

}

set ...{

_lastName = value;

}

}

public int Age ...{

get ...{

return _age;

}

set ...{

_age = value;

}

}

}

  使用Orcas 版的C#后我们可以利用其自动属性功能重写如上代码如下:

  

以下是引用片段:
public class Person ...{

public string FirstName ...{

get; set;

}

public string LastName ...{

get; set;

}

public int Age ...{

get; set;

}

}

  或者为了更加简洁,我们可以减少空白区域,将代码紧凑如下:

  

以下是引用片段:
public class Person ...{

public string FirstName ...{ 

get; set; 

}

public string LastName ...{ 

get; set; 

}

public int Age ...{

 get; set; 

}

}

  当C# “Orcas”编译器遇到一个如上所示的空白的get/set property implementation时,它将会在你的类中自动产生一个私有域,同时实现一个公共的getter and setter property implementation。这样做的好处是,从type-contract的角度看,类好像使用了上述第一段代码中的执行(implementation)。这就意味着,与公共领域不同,我们将来可以在property setter implementation中添加验证逻辑,而不需要改变任何与类相关的外部组件。

  Object Initializers——对象初始化器

  本初始化器可以促进编译器自动生成property setter代码,由此可为用户省略了几行硬代码的编写。.NET Framework中的Types依赖于properties的使用。在初始化和使用一个新类时,开发人员通常要写出如下代码:

  

以下是引用片段:
Person person = new Person();

person.FirstName = Scott;

person.LastName = Guthrie;

person.Age = 32;

  你是否曾经想过使这一代码变得更加简洁,也许只用一行就可以实现?使用C# 和VB “Orcas”编译器,你可以充分利用名为“object Initializers”的“syntactic sugar”语言特征使以上代码简化如下:

   以下是引用片段:
Person person = new Person ...{ FirstName=Scott, LastName=Guthrie, Age=32 };

  编译器将会自动产生合适的property setter代码来保持与上述详细代码段同样的语义。

  对象初始化器不仅可在初时化类型时设置简单的属性值,而且允许我们随意设置更复杂嵌套的属性类型。比如,假设我们上述定义的每个Person类型均有一个“Address”类型的Address属性。我们可以用如下代码来创建Person对象并设置其属性:

以下是引用片段:
Person person = new Person ...{

FirstName = Scott,

LastName = Guthrie

Age = 32,

Address = new Address ...{

Street = One Microsoft Way,

City = Redmond,

State = WA,

Zip = 98052

}

};

  Collection Initializers——集合初始化器

  这一新特性与上述特性基本相同,唯一不同之处在于它作用于集合。对象初始化器功能强大可以帮助开发人员更加容易且简洁的添加对象到集合中。例如,如果我想添加三个people到一个“Person”类型的generics-based List集合中,我们可以用以下代码实现:

  

以下是引用片段:
List people = new List();

people.Add( new Person ...{ FirstName = Scott, LastName = Guthrie, Age = 32 } );

people.Add( new Person ...{ FirstName = Bill, LastName = Gates, Age = 50 } );

people.Add( new Person ...{ FirstName = Susanne, LastName = Guthrie, Age = 32 } );

  在这个例子中仅使用新的对象初时化器特性一条,和C# 2.0编译器相比我们就省去12条额外代码的编写。

  C# and VB “Orcas”编译器不仅使我们在对象的声明和初始化方面更加简单,而且支持“collection initializers”可以使我们避免成倍的Add语句,同时节省更多的击键次数:

以下是引用片段:
List people = new List ...{

new Person ...{ FirstName = Scott, LastName = Guthrie, Age = 32 },

new Person ...{ FirstName = Bill, LastName = Gates, Age = 50 },

new Person ...{ FirstName = Susanne, LastName = Guthrie, Age = 32 }

};

  当编译器遇到如上语法,它将自动产生集合插入代码,就像如上所示拥有更详尽Add语句的代码段一般。

  总之,作为开发人员,我们现在拥有更加简洁的方式来定义对象,初始化他们,然后添加他们到集合。在运行时,它所表达的语义将和今天所书写的详细语法一样正确,因此你不必担心任何行为上的变化。同时,现在你不必书写更多的代码,你的代码将变得更加简洁明了。


Orcas版C#3.0的新特性
  • 上一篇文章:

  • 下一篇文章:
  •  热门文章
    普通文章 电子邮件改头换面 四公司畅谈未
    普通文章 PC病毒史上最声名狼藉的八大病
    普通文章 Rails系统中的AJAX开发技术简析
    普通文章 基于ASP.NET AJAX框架实现表单
    普通文章 开发ASP.NET AJAX客户端定制行
    普通文章 用JFreeChart对JSP报表进行增强
    普通文章 SQL Server 2005上的CLR和ADO.
    普通文章 SQL Server 2005的XML支持机制
    普通文章 Firefox中标签式浏览技巧大全
    普通文章 Tomcat中的Session和Cookie大揭
     
     推荐文章
    推荐文章 把Google地图嵌入网页 就是这么
    推荐文章 迅雷搜索候选资源出错的解决
    推荐文章 轻松去除迅雷里的各种广告和资
    推荐文章 突破限制 免费领养到QQ空间五级
    推荐文章 Rational统一过程RUP贴近中小软
    推荐文章 构建自己的轻量级XML DOM分析程
    推荐文章 WPS Office 2007技巧:妙用配置
    推荐文章 Excel 2007:求余数函数实用进阶
    推荐文章 浅谈ASP.NET的Postback
    推荐文章 软件开发中项目需求管理简述
     
     相关文章
    没有相关文章
    设为首页 | 加入收藏 | 广告合作 | 联系站长 | 版权申明 |
    动力中国为网友提供免费学习资料,可用资源,如果您认为我们的相关内容侵害到了您的权利请联系管理员
    Copyright © 2006-2008 domcn.org All Rights Reserved.