一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

C#學(xué)習(xí)筆記

 MyFinoa 2017-10-22

1、LINQ特有的編程結(jié)構(gòu)

隱式類型本地變量:C#的var關(guān)鍵字允許定義不顯式指定實際數(shù)據(jù)類型的本地變量。不過由于編譯器將根據(jù)初始值推斷其數(shù)據(jù)類型,所有該變量仍然是強類型的。

對象和集合初始化語法:它允許我們在創(chuàng)建類或結(jié)構(gòu)變量的同時設(shè)置其屬性。

Lambda表達(dá)式:C#Lambda操作符(=>)可以用來構(gòu)建Lambda表達(dá)式,并且在調(diào)用以強類型的委托作為參數(shù)的方法時,也十分有用。

擴(kuò)展方法:C#擴(kuò)展方法不使用子類就能夠像已知類中添加新的功能。同樣,它還可以向不能有子類的密封類和結(jié)構(gòu)中添加新的功能。在編寫擴(kuò)展方法時,第一個參數(shù)必須使用this限定符,用來表示被擴(kuò)展的類型。擴(kuò)展方法只能定義在靜態(tài)類中,并且必須使用static關(guān)鍵字聲明為靜態(tài)方法。

匿名類型:該特性可以快速建立數(shù)據(jù)的“結(jié)構(gòu)”,編譯器將根據(jù)名稱/值對的結(jié)合在編譯時生成新的類。該類型是基于值的語義構(gòu)建的,因此System.object中的每個虛方法都要重寫。要定義一個匿名類型,可以聲明一個隱式類型變量,并使用對象初始化語法指定數(shù)據(jù)的結(jié)構(gòu)。

2、LINQ查詢表達(dá)式是強類型的(跟傳統(tǒng)的SQL語句有所不同)。

3、核心LINQ程序集

System.Core.dll:定義了代表核心LINQ API的類型;

System.Data.DataSetExtensions.dll:定義了許多類型來將ADO.NET類型融入LINQ變成范式;

System.Xml.Linq.dll:提供了使用LINQ處理XML文檔數(shù)據(jù)所需的功能。

4、將LINQ查詢應(yīng)用于原始數(shù)組

復(fù)制代碼
 1         static void Main(string[] args)
2 {
3 QueryOverStrings();
4 Console.ReadLine();
5 }
6
7 static void QueryOverStrings()
8 {
9 //假定我們有一個字符串?dāng)?shù)組
10 string[] currentVideoGames = { "Morrowind", "Uncharted2", "Fallout 3", "Daxter", "System Shock 2" };
11
12 //構(gòu)建一個查詢表達(dá)式,來代表數(shù)組中有一個空格的項
13 IEnumerable<string> subset = from g in currentVideoGames where g.Contains(" ") orderby g select g;
14
15 //輸出結(jié)果
16 foreach (string s in subset)
17 Console.WriteLine(s);
18 }
復(fù)制代碼

一般來說,在獲取LINQ查詢的結(jié)果集時,應(yīng)該總是使用隱式類型。但要記住的是,在絕大多數(shù)情況下,真正的返回值是實現(xiàn)了泛型IEnumerable<T>接口的類型。

復(fù)制代碼
        static void QueryOverInts()
{
int[] numbers = { 10, 20, 30, 40, 1, 2, 3, 8};

//只輸出小于10的項
//使用隱式類型
var subset = from i in numbers where i < 10 select i;

foreach (var i in subset)
Console.WriteLine(i);
ReflectOverQueryResults(subset);
}
復(fù)制代碼

5、LINQ和擴(kuò)展方法:雖然System.Array并沒有直接實現(xiàn)IEnumerable<T>接口,但它通過靜態(tài)的System.Linq.Enumerable類類型間接地得到了該類型所需的功能,同時還得到了許多其他的與LINQ相關(guān)成員。

6、延遲執(zhí)行的作用:有關(guān)LINQ查詢表達(dá)式另一個重要的地方是在我們迭代內(nèi)容之前,它們不會真正進(jìn)行運算,嚴(yán)格的說叫做延遲執(zhí)行。這個方式的好處在于可以為相同的容器多次應(yīng)用相同的LINQ查詢,而始終可以獲得最新的最好的結(jié)果。

復(fù)制代碼
 1         static void QueryOverInts()
2 {
3 int[] numbers = { 10, 20, 30, 40, 1, 2, 3, 8};
4
5 //只輸出小于10的項
6 //使用隱式類型
7 var subset = from i in numbers where i < 10 select i;
8
9 foreach (var i in subset)
10 Console.WriteLine(i);
11 Console.WriteLine();
12
13 //修改一些數(shù)據(jù)
14 numbers[0] = 4;
15
16 //再一次運算
17 foreach (var j in subset)
18 Console.WriteLine(j);
19 Console.WriteLine();
20
21 ReflectOverQueryResults(subset);
22 }
復(fù)制代碼

7、立即執(zhí)行的作用:如果希望foreach邏輯外部運算LINQ表達(dá)式,可以調(diào)用由Enumerable類型定義的許多擴(kuò)展方法來完成。Enumerable定義了諸如ToArray<T>()、ToDictionary<TSource,TKey>()以及ToList<T>()在內(nèi)的許多擴(kuò)展方法。在調(diào)用這些方法的同時將執(zhí)行LINQ查詢,以獲取數(shù)據(jù)快照。然后這些數(shù)據(jù)快照就可以獨立進(jìn)行操作了:

復(fù)制代碼
 1         static void ImmediateExecution()
2 {
3 int[] numbers = { 10, 20, 30, 40, 1, 2, 3, 8 };
4
5 //立即獲取數(shù)據(jù)為int[]
6 int[] subsetAsIntArray =
7 (from i in numbers where i < 10 select i).ToArray();
8
9 //立即獲取數(shù)據(jù)為List<int>
10 List<int> subsetAsListOfInts =
11 (from i in numbers where i < 10 select i).ToList();
12 }
復(fù)制代碼

整個LINQ表達(dá)式用圓括號括起來,這樣就能將它強制轉(zhuǎn)換為正確的實際類型來調(diào)用Enumerable的擴(kuò)展方法。C#編譯器可以準(zhǔn)確檢測泛型項的類型參數(shù),我們不需要指定類型參數(shù)。

8、返回LINQ查詢的結(jié)果

9、將查詢應(yīng)用到集合對象

10、C#LINQ查詢操作符



    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    中文字幕亚洲人妻在线视频| 久久精品久久久精品久久| 最近的中文字幕一区二区| 日本中文在线不卡视频| 国产精品亚洲一级av第二区| 亚洲欧洲一区二区综合精品| 日韩欧美综合在线播放| 国产精品免费不卡视频| 日本欧美视频在线观看免费| 国产午夜福利片在线观看| 黑色丝袜脚足国产一区二区| 91超频在线视频中文字幕| 中文字幕日韩欧美亚洲午夜| 尹人大香蕉中文在线播放| 精品国产亚洲一区二区三区| 国产一区二区三区四区免费| 色小姐干香蕉在线综合网| 亚洲国产欧美精品久久| 欧美亚洲91在线视频| 国内精品伊人久久久av高清| 日韩欧美三级视频在线| 日本欧美在线一区二区三区| 国产一区二区三区精品免费| 国产又粗又猛又爽色噜噜| 亚洲天堂精品1024| 日韩午夜福利高清在线观看| 亚洲精品欧美精品一区三区| 邻居人妻人公侵犯人妻视频| 国产一级二级三级观看| 精品一区二区三区三级视频| 91麻豆视频国产一区二区| 亚洲国产成人久久99精品| 亚洲国产av精品一区二区| 欧美乱码精品一区二区三| 日韩高清中文字幕亚洲| 色丁香一区二区黑人巨大| 亚洲中文字幕在线视频频道| 国产一区二区三区草莓av| 人妻亚洲一区二区三区| 人人妻人人澡人人夜夜| 欧美人妻盗摄日韩偷拍|