ASP.NET MVC學(xué)前篇之?dāng)U展方法、鏈?zhǔn)骄幊?/p>
我們擁有10多年網(wǎng)頁(yè)設(shè)計(jì)和網(wǎng)站建設(shè)經(jīng)驗(yàn),從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁(yè)設(shè)計(jì)師為您提供的解決方案。為企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、微信開(kāi)發(fā)、成都微信小程序、成都手機(jī)網(wǎng)站制作、HTML5、等業(yè)務(wù)。無(wú)論您有什么樣的網(wǎng)站設(shè)計(jì)或者設(shè)計(jì)方案要求,我們都將富于創(chuàng)造性的提供專(zhuān)業(yè)設(shè)計(jì)服務(wù)并滿(mǎn)足您的需求。
目的沒(méi)有別的,就是介紹幾點(diǎn)在ASP.NETMVC 用到C#語(yǔ)言特性,還有一些其他瑣碎的知識(shí)點(diǎn),強(qiáng)行的劃分一個(gè)范圍的話(huà),只能說(shuō)都跟MVC有關(guān),有的是外圍的知識(shí),有的是包含在框架內(nèi)的。 MVC學(xué)前篇字樣?有噱頭的成分也有真實(shí)的成分,所以工欲善其事,必先利其器。器是什么?基礎(chǔ)嘛,雖然說(shuō)MVC框架中涉及到的知識(shí)很多很多也不是我一篇兩篇能說(shuō)完的,我能做的就是知道多少就跟大家分享多少,當(dāng)然了隨著時(shí)間的推移會(huì)完善這個(gè)系列。
擴(kuò)展方法是C# 3.0特性里的知識(shí),它用在最多的地方是在Linq中,把眾多的查詢(xún)功能添加到了IEnumerable和IEnumerable<T>類(lèi)型中, 這里不說(shuō)太多,不然就扯Linq了。
運(yùn)用的實(shí)際場(chǎng)景:有個(gè)購(gòu)物清單(購(gòu)物車(chē))對(duì)象,它包含有添加、***清單內(nèi)物品的功能
商品對(duì)象,它包含 商品名稱(chēng)、商品價(jià)格兩個(gè)屬性
代碼1-1
1 namespace BlogCase
2 public class Commodity
3 {
4 public string Name { get; set; }
5 public float Price { get; set; }
6 }
7
8 namespace BlogCase
9 /// <summary>
10 /// 購(gòu)物清單
11 /// </summary>
12 public class ShoppingList
13 {
14 private List<Commodity> _Commodities;
15
16 public List<Commodity> Commodities
17 {
18 get { return _Commodities; }
19 }
20
21 public ShoppingList()
22 {
23 _Commodities = new List<Commodity>();
24 }
25
26 public bool AddCommodity(Commodity commodity)
27 {
28 _Commodities.Add(commodity);
29 return true;
30 }
31
32 public bool RemoveCommodity(Commodity commodity)
33 {
34 if (_Commodities.Contains(commodity))
35 {
36 _Commodities.Remove(commodity);
37 return true;
38 }
39 else
40 {
41 return false;
42 }
43 }
44 }然后在這個(gè)令人不安、惶恐、期待、興奮的新需求來(lái)了,要求清單可以提供一個(gè)清單內(nèi)部所有貨品價(jià)格的合計(jì)而又不破壞對(duì)象結(jié)構(gòu).
對(duì)的。這是非常合理的需求,現(xiàn)在咒罵也于事無(wú)補(bǔ),因?yàn)樾枨罂偸俏粗摹T诮辜薄o(wú)奈中曙光就降臨了,它就是C# 3.0中的特性擴(kuò)展方法。
來(lái)看代碼1-2
代碼1-2
1 using BlogCase;
2 using System.Linq;
3
4 namespace BlogCase.Extension
5 {
6 public static class ShoppingListExtension
7 {
8 public static float Total(this ShoppingList shoppintlist)
9 {
10 return shoppintlist.Commodities.Sum(commodity => commodity.Price);
11 }
12 }
13 }這里要說(shuō)的是ShoppingListExtension類(lèi)型是一個(gè)靜態(tài)類(lèi),里面定義了一個(gè)靜態(tài)方法Total,方法的簽名是ShoppingList類(lèi)型的參數(shù),唯一不同的是在ShoppingList類(lèi)型前面多了個(gè)this關(guān)鍵字,這時(shí)對(duì)ShoppingList類(lèi)型的擴(kuò)展方法已經(jīng)定義好了。來(lái)看下示例代碼1-3的使用吧。
代碼1-3
1 using BlogCase.Extension;
2
3 namespace BlogCase
4 {
5 class Program
6 {
7 static void Main(string[] args)
8 {
9 ShoppingList shoppinglistTest = new ShoppingList();
10 shoppinglistTest.AddCommodity(new Commodity() { Name = "A", Price = 14.3f });
11 shoppinglistTest.AddCommodity(new Commodity() { Name = "B", Price = 15 });
12 shoppinglistTest.AddCommodity(new Commodity() { Name = "C", Price = 27.9f });
13 shoppinglistTest.AddCommodity(new Commodity() { Name = "D", Price = 34.3f });
14 Console.WriteLine(shoppinglistTest.Total().ToString());
15 Console.ReadLine();
16 }
17 }
18 }這里需要注意的是需要引用擴(kuò)展方法類(lèi)ShoppingListExtension所在的命名空間,在VS開(kāi)發(fā)環(huán)境中,擴(kuò)展方法的圖標(biāo)也和普通方法的不一樣。如圖1
圖1

運(yùn)行結(jié)果如圖3
圖3
ASP.NETMVC學(xué)前篇之?dāng)U展方法、鏈?zhǔn)骄幊?/a>
轉(zhuǎn)載來(lái)源:http://www.chinadenli.net/article14/pgcgge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、標(biāo)簽優(yōu)化、小程序開(kāi)發(fā)、網(wǎng)站排名、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)