1.C#語言發展史
本部分簡單介紹從C#1到C#5各個版本的語言新特性,
1.簡單的數據類型
我們先使用C#1編寫一個Product類,如下圖所示
C#2 中的強類型集合(泛型)
C#3 自動實現屬性和簡化初始化
C#4 命名參數
以上就是Product類從C#1到C#4的演變歷程總結如下:
2.排序和過濾
排序功能
下面我們將使用按名稱對Product對象進行排序,來展示對排序的改進。
C#1中的排序
C#2 中的排序(引入了泛型)
C# 3中的排序(Lambda表達式)
下面總結一下在排序的過程中C#1-C#3過程中的演變歷程
3.列表查詢
下面要展示的是查詢出Product列表中price>250的所有商品
C#1的查詢
C#1中存在問題:C#1 中存在強制類型轉換,使用if循環判斷
C#2中的查詢(引入泛型避免強制類型轉換)
使用if判斷不專業,C#2中可以使用委托,並且將打印和查詢分開
在將上面的代碼進行優化,如下所示,但是委托看起來依然很繁瑣
C#3 使用Lamdba表達式進行優化
總結
4.處理未知數據
可空類型
處理未知數據的場景:如果在數據庫中Product類中的price對象值可以為null,但是在對象中它是值類型,值類型不能為null。
在C#1中處理方式有三種:
1.圍繞decimal創建一個引用類型的包裝器
2.維護一個bool類型值,表示他是否為null
3.使用"魔數"來表示一個未知的價格
C#2中使用.Net 2.0提供的 可空類型 Nullable<T>結構,並提供語法糖簡化工作
readonly decimal? price;
可選參數和默認值
在C#1、C#2、C#3中如果不想對外提供所有的方法參數就必須使用方法的重載。
但是在C#4中引入了 "可選參數"
5.Linq簡介
Linq是C#3的核心,Linq是關於查詢的,其目的是使用一致的語法和特性,以一種易閱讀、可組合的方式,使對多數據源的查詢變得簡單。
查詢表達式
數據源為對象的List
例如:查詢單價大於100的商品名稱和供貨商名稱
Var是在程序編譯時根據結果推斷所需的類型,類型推斷
查詢xml
數據源為xml文件
Linq to Sql
數據源為數據庫時其寫法類似於基於對象的list,以后再詳細講解。
6.com和動態類型
C#4 中最為重要的是互操作,其中包括兩大主題對舊的com技術的處理和映入dynamic
com:Component Object Model,C#4中簡化Com互操作,支持索引器
動態類型dynamic:一個新的類型,對於C#編譯器是一個類型,CLR根本不識別,用於更動態語言進行交互。
7.異步代碼
C#5的的特性:異步函數,可以使用異步函數來中斷代碼的執行,而不阻塞線程。
async: async 其實就是一個標記,標記這個方法是異步方法。當方法被標記為一個異步方法時,那么其方法中必須要使用await關鍵字。
await:
8..net平台簡介