国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

1.一步一步學c#(一):.NET體系結構(知識點)

2019-11-14 16:26:54
字體:
來源:轉載
供稿:網友

.C#和.NET關系

    1.%20首先C#語言有兩個很重要的方面:第一它是為了Microsoft的.NET%20Framework的結合而設計的,其次它是一種為問題而設計解決問題的方法的語言,它有很多相似語言的長處。

C#本身就是一種語言,它不是.NET的一部份,兩者各有所長,但兩者是一起使用。

 

2.什么是.NET

        .NET是微軟的新一代技術平臺,為敏捷商務構建互聯互通的應用系統,這些系統是基于標準的,聯通的,適應變化的,穩定的和高性能的。.NET應用它是一個運行于。NET

Framework之上的應用程序。(更精確的說一個。NET應用是一個使用.NET%20Framework類庫來編寫,并運行于公共語言運行時%20Common%20Language%20Runtime之上的應用程序)。

二.公共語言運行庫

    1.%20.NET%20Framework的核心是公共語言運行庫(CLR)或.NET運行庫,一般將CLR控制臺下運行的代碼稱為托管代碼(managed%20code).

在.NET中完成編譯的兩種方法:1·將源代碼轉換為Microsoft中間語言。2·利用CLR把IL編譯成平臺專用代碼。Microsoft中間語言的理念:低級語言,語法簡單,(語法簡單表現在它使用數字代碼而不是文本代碼),能快速的轉換為本地機器碼,對于代碼來說這種設計具有重要的有點:平臺無關性,提高性能和語言的互操作性。

1>.平臺無關性:包含字節碼指令的同一文件可以放在任何一個平臺中,運行時后面的編譯就可以很輕松的完成,這樣一來平臺上運行的代碼就是特定的,換一句話說,就是編譯成中間語言時同時獲得了.NET的平臺無關性。和它相同的是編譯java時字節碼就會獲得Java的平臺無關性。

2>提高性能:因為IL總是即時編譯的(JIT編譯),之前的Java在運行應用程序時會把字節碼轉換為內部可執行代碼,這樣的過程會導致性能的損失,而JIT編譯是一種通過在運行時將字節碼翻譯為機器碼,從而改善字節碼編譯語言性能的技術。JIT編譯器不是把整個程序一次性的編譯完,如果這樣一次性編譯完就會浪費很多的時間,而是只編譯被調用的那部分。編譯代碼過一次后,得到的本地可執行程序就會儲存起來,知道退出該程序為止,這樣在下次運行此代碼時,就不用重新編譯了。

3>語言的互操作性:IL功能:支持平臺無關性,還支持語言互操作性(能將任何一種語言編譯為中間語言)編譯成語言的代碼和其他語言編譯之后的代碼進行互相操作。

 三.中間語言

    %20中間語言的特征:·面向對象和接口的支持·值類型和引用類型之間的顯著差異·強數據類型化·使用異常來處理錯誤·使用特性(attribute).

    %20使用.NET框架提供的編譯器可以直接將源程序編譯為.exe或.dll文件但此時編譯出來的程序代碼并不是cpu能直接執行的機器代碼,而是中間語言(IL)的代碼.

使用中間語言的優點:1.可以實現平臺無關性,即與特定的cpu無關。2.只要把.NET框架某種語言編譯成IL代碼,就實現.NET框架中語言之間的交互操作。

1.COM接口理念:提供一個契約,實現給定接口的類必須提供該接口指定的方法和屬性的實現方式。

另外中間語言還引入了接口的概念

另外中間語言還引入了接口的概念用.NET建立的接口與COM接口不同,它不用支持任何COM基礎結構比如說:它們不是派生自IUnknown,也沒有對應的GUID,但它們與COM接口共享同一理念。

語言互操作性的含義:是用一種語言編寫的類應能直接與用另一種語言編寫的類通信。要點是:1.用一種語言編寫的類應能繼承用另一種語言編寫的類。2.一個類應能包含另一個類的實例,切不管這兩個類是使用的什么語言。3.一個對象應能直接調用用其他語言編寫另一個對象的方法。4.對象的應用應能在方法之間傳遞。5.在不同的語言之間調用方法時,應能在調試器中交替調試這些方法調用,即調試不同語言編寫的源代碼。

2.不同的值類型和引用類型,他的特性是值類型和引用類型之間有明顯的區別。儲存方法:值類型,變量直接存儲其數據,而對于引用類型,變量僅儲存其地址,然后對應的數據可以在地址中找到。

強數據類型化如果數據類型不做顯式轉換,不能隨意賦值,叫做強數據類型。相對的弱數據類型,在不做顯示轉換的情況下,將其賦值給其他類型,可做自動轉換的,叫做弱數據類型。上面的中間語言的一個重要的方面是它基于強數據類型化。強迫實現類型的安全性會降低性能。但在許多情況下,我們從.NET提供的,依賴于類型安全的服務中獲得更多好處。服務包括:·語言的互操作性·垃圾收集·安全性·應用程序域。1.語言互操作性中強數據類型化重要的原因:如果類派生自其它類,或包含其他類的實例,它就需要知道其它類使用的所有數據類型。例如:假定將Visual%20Basic%202010類中的一個方法定義為返回一個Integer---Visual%20Basic%202010可以使用的標準數據類型之一。但C#沒有該名稱的數據類型,顯然,只有編譯器知道如何把Visual%20Basic%202010的Integer類型映射為c#定義的某種已知類型,才可以從該類型派生,使用這個方法,并在c#代碼中使用返回的類型,這個問題在.NET中如何解決呢?回答:此類數據類型問題在.NET中使用通過類型系統(CTS)得到了解決。Visual%20Basic%202010的Integer實際上一個32位有符號的整數,它實際映射為中間語言類型Int32,因此在中間語言代碼中就指定這種數據類型,C#編譯器可以用這種,所以問題解決了。

CTS的層次結構反應了中間語言的單一繼承的面向對象方法。

 

 


垃圾回收,用來在.NET中進行內存管理,特別是它可以恢復正在恢復在運行的應用程序需要的內存。

 

windows平臺已經使用了兩種技術來釋放進程向系統動態請求的內存:1·完全以手工方式使應用 程序代碼完成這些工作。2·讓對象維護引用計數。 那么.NET運行庫采用的方法是垃圾回收器,這是一個程序,它的目的是清理內存。使用的方法時 所有動態請求的內存都分配到推上(所有的語言都是這樣處理的,但在.NET中,CLR維護它自己的托管堆 供.NET應用程序使用)。每隔一段時間,當.NET檢測到給定進程的托管堆已滿,需要清理時就會調用垃圾回收器。 垃圾回收器處理目前代碼中的所有變量,檢測對儲存在托管堆上的對象的引用,確定哪些對象可以從代碼中訪問 就是哪些對象有引用,沒有引用的對象就不在認為可以從代碼中訪問,因而被刪除。

應用程序域它用于減少運行應用程序的系統開銷,這些應用程序需要與其他程序分離開來,但仍需要彼此通信。

孤立代碼的唯一方式是通過進程來實現的,啟動一個新的應用程序時,它會在一個進程環境內運行,Windows通過地址空間把進程分割開來,每個進程有4GB的虛擬內存來儲存其數據和可執行代碼,(4GB對應的是32位系統)它利用額外的間接方式把這些虛擬內存掛載到物理內存或磁盤空間的一個特殊區域中,每個進程都會有不同的掛載,虛擬地址空間塊掛載的物理內存之間不重疊。

任何進程都只能通過指定虛擬內存中的一個地址來訪問內存,也就是進程不能直接訪問物理內存,因此一個進程不可能訪問分配給另一個進程的內存。

進程對確保安全有很大的幫助,但它們有個大缺點就是性能。解決這一問題的方法時使用基于DLL的組件,讓所有的組件在同一個地址空間中運行————其風險是執行出錯的組件會影響其他組件。

應用程序域是分離組件的一種方式,它不會導致因在進程之間傳遞數據而產生性能問題,其方法是把任何一個進程分解到多個應用程序域中,每個應用程序域對應一個應用程序,執行的每個線程都運行在一個具體的應用程序域中。

 

 程序集

程序集是包含編譯好的,面向.NET Framwork的代碼的邏輯單元。

要點:它是一個邏輯單元。程序集的一個重要的特性是他們包含的元數據描述了對應代碼中定義的類型和方法,程序集包含程序的元數據。

程序集的兩種類型:私有程序集和共享程序集。1.私有程序集一般是附帶在某個軟件上的,常見的情況是,以可執行文件或許多庫的方式提供應用程序這些庫包含的代碼只能用于該應用程序,。0影響(xcopy)安裝是:把相應的文件放在文件系統的對應文件夾中。共享程序集是其他應用程序可以使用的公共庫。全局程序集緩存是把共享程序集放在文件系統的一個特定的子目錄樹中。根據私鑰加密法為共享程序集指定一個名稱稱為強名。(必須由要引用共享程序集的應用程序來引用)。

反射 因為程序集儲存了元數據,包括在程序中定義的所有類型和這些類型的成員的細節,所以可以編程訪問這些元數據。

.NET基類的一個主要優點是非常的直觀和易用。例如,要啟動一個線程,可以調用Thread類的Start()方法。要禁用TextBox,應把TextBox對象的Enabled的屬性設置為false.

名稱空間可以互相嵌套,大多數用于一般目的的.NET基類位于名稱空間System中,基類Arry在這個名稱空間中,全名就是System.Arry。.NET需要在名稱空間中定義所有的類型如:把Customer類放在名稱空間中YourCompanyName中,則這個類的全名就是YourCompanyName.Customer.

用c#創建.NET應用程序

創建asp.net應用程序1.ASP.NET的功能

主要;ASP.NET頁面是結構化的,ASP.NET頁面的另一個優點是可以在Visual Studio 2010中建立他們,在該環境下,可以創建ASP.NET頁面使用的業務邏輯和數據訪問組件。Wed服務器控件用于添加到Wed窗體上的控件與ActiveX控件并不是一種控件,他們是ASP.NET名稱空間中的xml標記。

XAML是用于創建窗體的XML聲明,它代表WPF應用程序的所有可視化部分和操作。

.NET的下述特性在編譯和執行過程的作用:程序集和.NET基類,COM組件,JIT編譯,應用程序域,垃圾回收。

 

 

 

 

 

 

 

 

    

 

 

   

       

 
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 霍城县| 台安县| 靖西县| 铁岭市| 灌南县| 宝兴县| 青田县| 莒南县| 婺源县| 仙游县| 砀山县| 垣曲县| 舟曲县| 天等县| 威海市| 临海市| 锡林浩特市| 安义县| 乐业县| 古交市| 惠东县| 淳化县| 中阳县| 泉州市| 临汾市| 灌云县| 浑源县| 太白县| 万荣县| 玉龙| 哈密市| 库尔勒市| 芦山县| 东光县| 揭西县| 望都县| 衢州市| 昌江| 昌江| 建始县| 儋州市|