程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 親密接觸C# 4.0

親密接觸C# 4.0

編輯:C#入門知識

花了兩個晚上,終於看完了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類型的項目

完整的代碼:
 1using System;
 2using System.Diagnostics;
 3using System.Linq;
 4using Excel = Microsoft.Office.Interop.Excel;
 5using Word = Microsoft.Office.Interop.Word;
 6namespace ConsoleApplication1
 7{
 8    class Program
 9    {
10        static void Main(string[] args) {
11            var excel = new Excel.Application();
12        excel.Visible = true;
13        excel.Workbooks.Add();                    // optional arguments omitted
14        excel.Cells[1, 1].Value = "Process Name"; // no casts; Value dynamically 
15        excel.Cells[1, 2].Value = "Memory Usage"; // accessed
16        var processes = Process.GetProcesses()
17            .OrderByDescending(p => p.WorkingSet)
18            .Take(10);
19        int i = 2;
20        foreach (var p in processes) {
21            excel.Cells[i, 1].Value = p.ProcessName; // no casts

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved