標籤:http io os 使用 ar for 檔案 資料 sp
- 診斷和效能
- 從 .NET Framework 4 開始,您可以獲得每個應用程式定義域的處理器使用方式和記憶體使用量情況估計值
- 通過託管承載 API、本機承載 API 以及 Windows 事件跟蹤 (ETW),可提供應用程式定義域資源監控
- 參見新增的 AppDomain.MonitoringIsEnabled 屬性
- 記憶體回收
- .NET Framework 4 提供背景記憶體回收替代了以前版本中的並發記憶體回收並提高了效能
- 代碼協定
- 代碼協定允許您指定方法或類型的簽名沒有單獨表示的協定資訊
- 以前置條件、後置條件和對象固定的形式來表示編碼假設
- 新的 System.Diagnostics.Contracts 命名空間
- 這些協定利用運行時檢查改進了測試,啟用了靜態協定驗證並支援文檔產生
- 更多資訊,請參見代碼協定
- 動態語言運行時
- 動態語言運行時 (DLR) 是一種新運行時環境,它將一組適用於動態語言的服務添加到 CLR
- 藉助於 DLR,可以更輕鬆地開發要在 .NET Framework 上啟動並執行動態語言
- System.Dynamic 命名空間
- 參見動態語言運行時概述
- 協變和逆變
- 現在,有多個泛型介面和委託支援協變和逆變
- 更多資訊,請參見泛型中的協變和逆變
- BigInteger和複數
- 新的 System.Numerics.BigInteger 結構是一個任意精度 整數資料類型,它支援所有標準整數運算
- 可以通過任何 .NET Framework 語言使用該結構
- 一些新 .NET Framework 語言(例如 F# 和 IronPython)對此結構具有內建支援
- 元組
- 包含結構化資料的元組對象的 System.Tuple 類
- 提供了泛型元組類以支援具有 1 到 8 個組件的元組
- 提供了一個具有 7 個型別參數和任何元群組類型的第 8 個參數的泛型元組類
- 檔案系統枚舉改進
- 新的檔案枚舉方法可以提高訪問大檔案目錄或逐一查看大檔案中的行的應用程式的效能。
- 記憶體對應檔
- 可以使用記憶體對應檔編輯非常大的檔案和建立共用記憶體以進行處理序間通訊
- 其他新增語言特性
- 新的 String.IsNullOrWhiteSpace 方法指示字串是否為 null、為空白或僅包含空白字元
- 您可以使用 String.Concat 方法將可枚舉集合中的每個元素串連在一起,而無需先將元素轉換成字串
- 可以使用的兩種新的簡便方法是:StringBuilder.Clear 和 Stopwatch.Restart
- 現在可以使用從 System.IO.Stream 類繼承的類中的 CopyTo 方法輕鬆地將一個流複製到另一個流中
- 新的 System.IObservable<T> 和 System.IObserver<T> 介面為基於推送的通知提供通用機制
- 現在可以通過將類型封裝在 System.Lazy<T> 類內部,為任何自訂類型啟用延遲初始設定
- System.IO.Compression.DeflateStream 和 System.IO.Compression.GZipStream 類的壓縮演算法得到了改進
- 可以使用 Thread.Yield 方法讓調用線程執行準備好在當前處理器上啟動並執行另一個線程
- System.Guid 結構現在包含 TryParse 和 TryParseExact 方法
- Managed Extensibility Framework
- MEF概述詳見:http://msdn.microsoft.com/zh-cn/library/dd460648(v=vs.100).aspx
- 並行計算
- .NET Framework 4 引入了用於編寫多線程和非同步代碼的新編程模型,極大地簡化了應用程式和庫開發人員的工作
- 通過固有方法編寫高效、細化且可伸縮的並行代碼,而不必直接處理線程或線程池
- 新的 System.Threading.Tasks 命名空間和其他相互關聯類型支援此新模型
- 並行 LINQ (PLINQ) 是 LINQ to Objects 的並行實現,能夠通過聲明性文法實作類別似功能
- 詳見:.NET Framework 中的並行編程
- 選擇性參數和具名引數
- 延遲初始化
- 對象的建立將會延遲至第一次使用該對象時
- 延遲初始化主要用於提高效能,避免浪費計算,並減少程式記憶體要求
- Lazy<T> 及其相關的類型還支援安全執行緒,並提供一致的異常傳播策略
- System.Lazy<T> 一個封裝類,可為任意類庫或使用者定義的類型提供延遲初始化語義
- System.Threading.ThreadLocal<T>,類似於 Lazy<T>,只不過它基於本地線程提供延遲初始化語義。每個線程都可以訪問自己的唯一值
- System.Threading.LazyInitializer<T>,為對象的延遲初始化提供進階的 static方法,此方法不需要類開銷
- Lazy<T>,isThreadSafe和LazyThreadSafetyMode(安全執行緒模式)參數,對象的安全執行緒
- 使用任何採用初始化方法(valueFactory 參數)的 System.Lazy<T> 建構函式時,會啟用異常緩衝
- 如果您使用不指定初始化方法的 System.Lazy<T> 建構函式,則不會緩衝 T 預設建構函式引發的異常
- 使用 PublicationOnly,通過爭用初始化,在這種情況下,不緩衝異常,訪問 Value 屬性的嘗試可以繼續下去,直到初始化成功
- 以並行方式逐一查看資料來源時,可以使用具有對執行緒區域資料的內建支援的重載
- 如何:編寫具有線程局部變數的 Parallel.ForEach 迴圈
- 並發集合支援
- System.Collections.Concurrent.BlockingCollection<T>
- System.Collections.Concurrent.ConcurrentBag<T>
- System.Collections.Concurrent.ConcurrentDictionary<TKey, TValue>
- System.Collections.Concurrent.ConcurrentQueue<T>
- System.Collections.Concurrent.ConcurrentStack<T>
- 新的同步基元
- 新的同步基元通過避免使用舊版多執行緒代碼中高開銷的鎖定機制,實現細化的並發和更快的效能
- System.Threading.Barrier
- System.Threading.CountdownEvent
- System.Threading.ManualResetEventSlim
- System.Threading.SemaphoreSlim
- System.Threading.SpinLock
- System.Threading.SpinWait
- 彙總異常
- System.AggregateException 類型可用於捕獲在不同線程上同時引發的多個異常,並將它們作為單個異常返回到聯結線程
【C#版本詳情回顧】C#4.0主要功能列表