`
tansitongba
  • 浏览: 486764 次
文章分类
社区版块
存档分类
最新评论

C# 4.0的一些新特性

 
阅读更多

vs2010正式版4月12日发布了,前几天我也下了一个,但这几天都没有时间好好试用一下,今天针对C#语言的新特性使用了一下,感觉还不错,有几个新特性和大家分享一下,希望我没有太火星……

一、新关键词——dynamic

在新版本的C#中,dynamic关键词是一个很重要的新特性,现在你可以创建动态对象并在运行时再决定它的类型。而且.net 4.0为CLR加入了一组为动态语言服务的运行时环境,称为DLR(Dynamic Language Runtime动态语言运行时),这使得C#这种静态类型语言可以在 .NET Framework 中开发动态语言并为与其它动态语言提供互操作性了。DLR架构见下图:
DLR架构
关于DLR的更详细信息,可以参考msdn:http://msdn.microsoft.com/en-us/library/dd233052(VS.100).aspx

先来看看dynamic的一个例子:

可能你会说,这个效果,我用object关键字就可以了,干吗加个dynamic?那我们就来讨论一下object与dynamic的区别。
先看如下代码:


这样肯定是通不过编译的,虽然obj存储的是一个整形,但是如果不进行类型转换的话编辑器肯定是不会编译通过的。所以我们就要改成:

但是这样就有个类型安全的问题了,加入我类型不是转换成int,而是string,那么编译器一样可以编译通过,但是运行时就会抛出异常:

由此可见,你要使上面代码正确运行,你必须得正确的进行类型的显式转换,就仅仅因为不这样做的话,编译器不让你通过而已。为了解决这个问题,dynamic由此产生。它告诉编译器:“哥说啥就是啥,你甭跟我废话”。见下例:

这是object和dynamic的其中一个不同。它告诉编译器对象的类型只有在运行时才知道,编译器就不会对其进行干涉。这样你可以少写很多代码。但有一点必须强调一下:dynamic并没有增加或减少危险。当你操作对象时要用到的所有类型检查技巧(例如反射),在动态对象中一样要用到。例如,以下代码在运行时将会抛出异常:

二、可选(或默认)参数

貌似这个特性在C#1.0就已经有很多人问过了,但直到4.0才有。现在你可以在方法定义的时候为参数指定一个默认值。调用方法的时候既可以像平时那样传入参数,也可以直接跳过不传入,这样的话,就使用默认值传到方法里。例如:

值得注意一点的是,可选参数必须放在所有参数的最后。这里就有个问题了,加入我某个方法有两个参数,两个都是可选参数,而我调用的时候只想传入第二个参数,怎么办呢?我们来试试。

但很可惜,编译通不过,这个问题,利用下面的新特性就可以解决了。

三、命名参数

在之前版本的C#中,方法定义的参数顺序必须与方法调用时的参数顺序一致,即方法Method(int i, string s)调用时就必须第一个传入int,第二个传入string,而现在,这个规矩可以被打破了。你可以自己随便什么顺序传入,这也在一定程度上提高了代码的可读性。例子:

这样一来,上面的那个问题就可以迎刃而解了:

四、提高COM的互操作性

基于以上三点新特性,COM的互操作性也被提高了。以后不用再写如下丑陋的代码:

现在只需这么写就搞定了:

顺带一句,这段代码用到了另一个叫做“索引属性”的新特性,更多关于这个特性的信息可以参考http://msdn.microsoft.com/en-us/library/ee310208%28VS.100%29.aspx这个特性只能用于COM互操作上,你不能创建自己的索引属性。

好了,就先分享这么多吧,以后有什么新发现再与大家分享吧~~~

分享到:
评论

相关推荐

    C#4.0的一些新特性

    C#4.0的一些新特性 C#4.0的一些新特性

    C# 4.0 的4个新特性

    C# 4.0 的4个新特性C# 4.0 的4个新特性C# 4.0 的4个新特性C# 4.0 的4个新特性

    c# 4.0新特性一览

    c# 4.0新特性一览PPT c# 4.0新特性一览PPT

    C#4.0新特性中文帮助文档

    C#4.0新特性 C#4.0中文帮助文档 C#4.0

    C#4.0权威指南

    内容全面,不仅重点讲解了C# 4.0的所有新特性,而且对C#的所有知识点的原理、用法和要点都进行了全面的讲解和深度的分析,广度和深度完美结合。《C# 4.0权威指南》注重实践,包含大量有价值的示例代码,可操作性极强...

    c# 4.0新特性详解

    c# 4.0新特性,vs2010的新特性,里面详细解释了特性的使用。

    C#4.0权威指南.pd

    内容全面,不仅重点讲解了C# 4.0的所有新特性,而且对C#的所有知识点的原理、用法和要点都进行了全面的讲解和深度的分析,广度和深度完美结合。《C# 4.0权威指南》注重实践,包含大量有价值的示例代码,可操作性极强...

    《C#4.0捷径教程》配套源码

    此为C#4.0捷径教程 一书的配套源码 好评如潮的C# 4.0实战图书 汲取.NET技术精髓的捷径 专章讲述习惯用法与设计模式 本书是经典教程的全面升级,通过许多精彩的示例介绍了C# 语言的每个新特性,深入浅出地讲解了C#...

    C#4.0和VS2010新特性

    C#4.0和VS2010新特性 C#4.0和VS2010新特性

    vs2008新特性 C#4.0

    C#4.0增加了动态语言特性从里面可以看到很多javascript、python这些动态语言影子虽然越来越偏离静态语 言道路但从另个角度来说这些特性也都是为了提高员生产力至于被接受和否还是让时间来说话吧  PS:这里面还有点...

    【好书推荐】C# 4.0 in a Nutshell, 4th Edition

    * 学习 C# 4.0 的新特性,如动态绑定,类型参数变化和可选参数等 * 使用 .NET 4 的丰富特性以为并联编程、代码契约和安全代码模型工作 * 学习 .NET 的话题,包括 XML、集合、I/0 和网络、内存管理、反射、属性、安全...

    c#4.0新特性

    Microsoft Visual C# 3.0作为Visual Studio 2008...在VS Managed Languages团队,我们一直努力创建该语言的下一个版本(没什么惊喜,就是C# 4.0),而这个文档是我们现在所看到的、计划中的语言特性的第一个公开描述。

    C#4.0新特性之(一)动态查找

    C#4.0新特性之新特性之新特性之新特性之(一一一一)动态查找

    C# 4.0权威指南-姜晓东

    《C#4.0指南》由[0国0]内资深微软技术专家亲自执笔,微软技术开发者社区和技术专家联袂推荐。内容新颖,基于新的C# 4.0、net framework 4和visual studio 2010;写作方式有创新,用图解的方式对C#进行了完美的演绎;...

    C#4.0新特性介绍

    C#4.0新特性介绍 动态查找 o 类型 o 动态操作 o 运行时查找 o 示例 o 带有动态参数的重载解析 o 动态语言运行时 o 已知问题 命名参数和可选参数 o 可选参数 o 命名的和可选的实参 o 重载解析 • 互操作...

    C# 4.0语言规范

    C# 4.0语言规范, 一共509页 C#(读作“See Sharp”)是一种简洁、现代、面向对象且类型安全的编程语言。C# 起源于 C 语言家族,因此,对于 C、C++ 和 Java 程序员,可以很快熟悉这种新的语言。C# 已经分别由 ECMA ...

    C#4.0 new feature

    C#4.0新特性:详细讲述了C#4.0的几个新特性:动态查找,命名参数和可选参数

    C#4.0新特性源码

    一个源码代表一个新特性,有很多特性,官方下载的

    C# 4.0捷径教程

    本书是经典教程的全面升级,通过许多精彩的示例介绍了c# 语言的每个新特性,深入浅出地讲解了c# 语言的核心概念,以及如何聪明地应用c# 的习惯用法和面向对象的设计模式来挖掘c# 和clr 的能力。这一版还介绍了c# 4.0...

    C# 4.0 The Complete Reference

    完整地介绍了C#4.0的整体特性。可以作为入门的参考,或是作为工具书使用

Global site tag (gtag.js) - Google Analytics