花了两个晚上,终于看完了New features in CSharp 4.0.docx。最大的感触是动态语言编程和COM的互操作性上游很大的变化。前者将是C#具备python和ruby的语言特性,后者将更好支持office编程。

  很多地方都没有看的很明白,需要进一步深入的学习。我会不定期更新此文章。

第一个主题:最大的变化是具备了动态语言的特征。

重点有以下几个方面:

Ø 动态编程语言对象

Ø 通过IDispatch来获取COM对象

Ø 通过反射获取.Net类型

Ø 对象结构的变化,类似于HTML DOM对象

C#在保留静态语言的同时,更好的实现对象的交互。

第二个主题:与VB保持共同进化。

C#4.0新特性

动态查询

被命名的和可选参数

COM特定的互操作特性

灵活性

动态查询

动态类型

动态操作符

运行时查询

COM对象

动态对象

普通对象

过度的解析动态参数

动态语言运行时

当前进度6页

现存问题

不能使用LINQ来查询动态对象。由于lambda不能作为参数传递给动态操作。

指定参数和任意参数

COM互操作特性

动态引用

NO PIAS 编译

这个功能将提高代码的编译效率,减少程序集加载做占用的内存。可参考张羿的webcast<<.NET 4.0中的新特性系列课程(1):等价类型(Type Equivalency)(>>

略去ref

逆变

Func<object,string> 可以这样用: Func<string,object>.

局限

IEnumerable<int>不等同于 IEnumerable<object>。因为从整型转换为对象是装箱操作,而不是引用变换。

三 文档最后的实例

我从word档拷贝到VS2010 BETA2上代码出现的问题:

var processes = Process.GetProcesses()
            .OrderByDescending(p
&gt; p.WorkingSet)
            .Take(10);

解决办法:小于号"<"替换成"&lt",大于号">"替换成"&gt"。即.OrderByDescending(p => p.WorkingSet)

3.1 新建console类型的项目

完整的代码:

 1亲密接触C# 4.0using System;
 2亲密接触C# 4.0using System.Diagnostics;
 3亲密接触C# 4.0using System.Linq;
 4亲密接触C# 4.0using Excel = Microsoft.Office.Interop.Excel;
 5亲密接触C# 4.0using Word = Microsoft.Office.Interop.Word;
 6亲密接触C# 4.0namespace ConsoleApplication1
 7}

 

3.2 添加引用

在COM标签中添加“Microsoft Excel 11.0 Object Library”的引用。

相关文章: