日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

[你必须知道的.NET]第二十九回:.NET十年(上)

發布時間:2023/12/10 asp.net 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [你必须知道的.NET]第二十九回:.NET十年(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引言

語言是程序開發者行走江湖的手上利器,各大門派的高手在論壇、博客為了自家門派爭吵不已早是技術世界中的亮麗風景,雖多少為剛剛踏入江湖的新手提供了思考的素材,但也同時迷惑了初出茅廬的前行方向。

本文不欲計較門派的高下,旨在明辨技術的真諦,這就是.NET平臺下的開發利器:C#語言,并從其變遷的進程中對于.NET技術發展把玩一番。

在上篇,我們走在歷史,對.NET的過去尤其是c#語言做以回顧,具體而言就是.NET 1.0、2.0、3.0的一路走來。

.NET之,歷史腳步

C#十年了。這個日期是從Anders Hejlsberg在1998年組建C#團隊開始算起的,掐指算來已是十年有余了。作為.NET平臺下的靜態強類型語言,在過去10年的發展歷程中披荊斬棘,已經逐漸成為應用開發語言中的佼佼者。從TIOBE開發語言排行榜的最新統計來看,C#位居第六成為開發語言市場的頂級產品:

表 1 TIOBE開發語言排行榜

(注:此為2008年12月的TIOBE開發語言排行榜,參考http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)

因此,在我們講解歷史的開始,將C#發展歷史中的里程碑作以標記,來感受一下C# 10年的發展歷程,為每開發者在心底搭起一座通往未來的橋梁。

下面我們分別從不同的歷史階段來了解C#語言的變遷,并討論在每個變遷的里程碑上值得品味的閃光點,并由此為未來的發展打一個基礎。

1.0,從誕生到立足

2000年之夏,微軟大當家--——蓋茨先生著手戰略調整,微軟大刀闊斧的進行了技術改革與創新,并由此為世界帶來一個新的名詞,這就是.NET。那么什么是.NET呢?在.NET這一概念誕生之初,這一概念連微軟本身都充滿了定位的錯亂和迷茫,以至于一時之間處處皆為.NET,大有一統江湖之勢。隨著.NET平臺的逐漸完善,概念和定位上的混亂已經日漸清晰,作為這場變革中的一項重要內容,一種全新的、能夠適應.NET平臺特性的高級語言C#也隨之誕生。這一任務理所當然的落在了Anders Hejlsberg的身上,作為Delphi之父,大師級的Anders從1998年11月開始領導了他的小組為這個世界帶來全新的語言寵兒,這就是:C#。

初出茅廬的C#,就像羞羞答答的小姑娘,步步留心、時時在意,學著他人的模樣,生怕在前輩面前丟臉。當她以全新的姿態出現在萬千程序開發者眼前時,其兼取百家之長、優雅簡潔之態、摒棄復雜之弊的特性,立時令所有的觀望折服。在迎來所有目光的關注的同時,迅速成為高級語言戰場的驕子。

那么,C#誕生之初兼取百家之長,具體都有哪些優秀品質呢,總結起來主要體現在兩個方面包括:

  • 面向對象編程。C#實現對屬性、事件、委托、方法、索引器、構造器的全面支持,為面向對象的封裝、繼承、多態和接口提供了語言級別的支持。以繼承為例,c#支持單實現繼承和多接口繼承,摒棄了C++中多繼承帶來的復雜性。
  • 跨平臺運行時支持。CLR是.NET平臺下應用程序的通用語言運行時,是C#程序賴以生存的跨平臺環境,因此C#具有了.NET平臺語言的所有優勢,通用類型系統、自動內存管理、統一異常處理、完全的FCL訪問權,都成為C#無與倫比的優勢所在。

2.0,變革之作

C# 2.0是一次完善和補充,也是一次變革與重生。在2.0中引入了諸多的語言特性,完善了1.0基礎上的某些不足,例如匿名方法將代碼放在委托而無需創建新的方法;可空類型實現了對值類型的null操作;而部分類將一個類分解到多個類文件中。這些補充和完善, 總結起來主要包括:

  • 匿名方法
  • 可空類型
  • 部分類
  • 迭代器
  • 泛型

其中,泛型支持是C# 2.0的重中之重,.NET框架從CLR級別實現了對泛型的支持,提供專門的IL指令支持泛型操作,同時配合C#語言機制構造一種全新的編程結構,實現了對類型抽象化的通用處理方式,這就是算法重用。

以最簡單的交換數據為例,我們來了解泛型帶來的好處:

// Release : code01, 2009/05/07 // Author : Anytao, http://www.anytao.com public static void Swap(ref int x, ref int y) {int temp = x;x = y;y = temp; }public static void Swap(ref string str1, ref string str2) {string temp = str1;str1 = str2;str2 = temp; }

以上兩種算法分別實現了對整型、字符串型數據的交換,在泛型引入之前實現相同的交換算法需要分別為所有的類型構建相似的處理邏輯,這顯然是一種代碼上的浪費,而泛型特性徹底解決了這一問題:

// Release : code02, 2009/05/07 // Author : Anytao, http://www.anytao.com public static void Swap<T>(ref T t1, ref T t2) {T temp = t1;t1 = t2;t2 = temp; }

對于不同的類型,在運行時以實際類型對T占位符進行替換,并轉換為本地代碼,徹底實現了靈活的類型抽象和算法重用。同時,除了代碼級別的重用好處,泛型解決了類型轉換、裝箱與拆箱、類型安全等諸多問題,為程序設計帶來巨大的變革。

3.0,涅槃與重生

C# 3.0是語言發展歷史上的里程碑變革,就像鳳凰涅槃一般為C#語言注入強大編程體驗和活力,簡潔、干凈、富有意義,這些特性中主要包括:

  • 匿名類型
  • 自動屬性
  • 對象初始化器
  • 集合初始化器
  • 隱式類型變量和隱式類型數組
  • 擴展方法
  • 查詢表達式

除此之外,C# 3.0的最大亮點就是LINQ(Language Integrated Query,語言集成查詢),在CLR中集成類似于SQL式的數據查詢能力,一種前所未有的函數式編程體驗在面向對象語言中得以大展拳腳,這不得不說是C#帶來的超酷體驗。

因為,本文并非一本講述編程的教科書,所以我們無法在有限的篇幅來展現優雅的代碼,只能取一瓢飲之,并通過簡要的對比來領略3.0中的強大功能。以對象初始化器為例,在2.0時初始化對象成員,我們以這種方式實現:

User user = new User(); user.Name = "小王"; user.Age = 28;

在3.0中,實現對象初始化有了更好的解決方案,由對象初始化器來完成:

User user = new User { Name = "小王", Age = 28 };

同樣的方式可以用來實現集合的初始化和隱式類型的初始化等。

接著,我們再來了解一下自動屬性帶來的語法魅力,在3.0之前進行屬性封裝的是一件麻煩的事情,例如:

// Release : code03, 2009/05/07 // Author : Anytao, http://www.anytao.com class User {private string name;public string Name{get { return name; }}private int age;public int Age{get { return age; }set { age = value; }} }

而自動屬性將這一切化簡為無形,語法簡單而功能依舊:

// Release : code04, 2009/05/07 // Author : Anytao, http://www.anytao.com public class User {public string Name { get; set; }public int Age { get; set; } }

這些所有的新特性最終都為了一個共同的目標而鋪墊,這就是C# 3.0中最重量級的新特性:LINQ。所以,本文也不能少了對LINQ的討論,在代碼級別實現類似于SQL式的查詢語法,以類型安全的通用方式完成增、刪、改、查等數據操作的基本方式。只要數據源基于IEnumerable<T>接口而實現,那么不管是關系型數據、內存中集合還是XML都可以作為LINQ查詢對象進行數據處理,這為面向對象語言實現函數式的編程體驗創造了條件,一種全新的編程風格為編程體驗刮來一股旋風:

// Release : code05, 2009/05/07 // Author : Anytao, http://www.anytao.com public static void Main() {List<User> users = new List<User>{new User{Name = "小王", Age = 27},new User{Name = "小張", Age = 29},new User{Name = "小李", Age = 23}};IEnumerable<User> result = from user in userswhere user.Age < 30orderby user.Age descendingselect user;foreach (var user in result){//執行操作} }

你看,這種體驗果然非同凡響,優雅而簡單沒有辜負Anders對于代碼美學的追求。而作為編程用戶,我們同樣體味了這種理念在功能和結構上的雙重精彩。

?

參考文獻

(Web)http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

(Web)http://weblogs.asp.net/podwysocki/archive/2008/05/24/what-is-the-future-of-c-anyways.aspx

(Web)New features in C# 4.0

(Web)http://msdn.microsoft.com/en-us/magazine/cc163340.aspx

作者簡介:

王濤,網名Anytao,微軟C# MVP,高級軟件工程師,機械工程碩士,《你必須知道的.NET》一書作者,主要研究方向為.NET底層架構和企業級系統應用。現就職于某軟件公司負責架構設計、軟件開發和項目管理方面的工作。作者對.NET基礎架構和CLR底層運行機制有濃厚的研究興趣和造詣,熟悉ASP.NET、XML、WCF、SQL Server相關技術,對面向對象、設計模式和軟件架構有一定的研究與實踐經驗。他的聯系方式如下:http://www.cnblogs.com/Anytao

?

總結

以上是生活随笔為你收集整理的[你必须知道的.NET]第二十九回:.NET十年(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产成人a亚洲精品 | 在线精品一区二区三区 | 中文字幕免费在线观看视频 | 日本久久久久 | 综合色88| 亚洲欧美亚洲 | 亚洲精品日韩在线观看 | 成年人久久 | 日本亚洲黄色 | sm在线看| 草久av| xx性欧美肥妇精品久久久久久 | 国产乱码久久久 | xxx一区二区| 久久久国产打桩机 | 日本精品一区二区视频 | 日韩视频播放 | 在线视频你懂得 | 日韩毛片在线视频 | 久久久久久久久久久久久国产 | 大胸美女无遮挡 | 人人爽人人做 | 黄色免费在线观看网站 | av网站免费在线播放 | 少妇又白又嫩又色又粗 | 国产老熟妇精品观看 | 中文无码av一区二区三区 | av一级网站 | 欧美色图国产精品 | 超碰不卡 | 午夜网页 | 国产999精品视频 | 欧美壮男野外gaytube | 国产精品久久久久久久无码 | 黄网站在线免费 | 七七色影院 | 亚洲无线观看 | 欧美一区免费观看 | 欧美三级不卡 | 欧美一区二区影院 | 九九热视频在线播放 | 亚洲天堂久久 | 久久片| 亚洲一级一区 | 中文字幕亚洲激情 | 久久久久久免费视频 | 中文字幕一区二区三区乱码在线 | 五月婷婷视频 | 91精品综合久久久久久 | 91天天| a在线视频 | 色丁香综合| 日日精| 成人乱人乱一区二区三区 | www.一区二区三区四区 | 人妻无码中文字幕 | 国产精品无码久久久久 | 欧美一级黄色片子 | 亚洲精品久久久久久一区二区 | 精品无码一区二区三区的天堂 | 亚洲精品高清视频 | 一区二区av | 尤物在线观看 | 亚洲私拍| 精品久久久视频 | 免费网站在线观看视频 | 精品人妻互换一区二区三区 | 色噜噜狠狠一区二区三区牛牛影视 | 欧美日韩免费在线观看 | 男女视频在线观看免费 | 亚洲欧洲成人精品久久一码二码 | 波多野结衣在线观看一区二区三区 | 嫩草网站在线观看 | 亚洲视频一区 | 99在线观看视频 | 日韩成人小视频 | 一区二区三区久久久久 | 伊人色爱 | 龚玥菲三级露全乳视频 | 国产免费一区二区三区最新不卡 | 国产三级日本三级在线播放 | 亚洲国产第一区 | 色午夜av | 精品国产乱码久久久久久郑州公司 | 国产一区二区在线播放视频 | 国产乱子伦农村叉叉叉 | 午夜精品久久久久久久久久久久久 | 亚洲视频在线免费 | 谁有av网址 | 中文字幕 人妻熟女 | 在线看片国产 | 国产女女做受ⅹxx高潮 | 亚洲第一页在线观看 | 成年人在线免费观看网站 | av片毛片| 99精品免费在线观看 | 97超碰人人网 | 黄页av| 日韩丝袜一区 |