欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
C#基礎(1)

1.程序的內存類(lèi)型

C#程序能夠使用三種類(lèi)型的內存:堆棧(stack)、托管堆(managed heap)、非托管堆(unmanaged heap。

a. 堆棧

每一個(gè)進(jìn)程和線(xiàn)程都具有自己的一塊堆棧內存,用它來(lái)存放私有的數據。不能被其他的進(jìn)程和線(xiàn)程訪(fǎng)問(wèn)。

堆棧的一個(gè)重要特性就是 “后進(jìn)先出”,如果堆棧指針超出了堆棧的范圍,就會(huì )出現堆棧溢出錯誤。.NET框架的堆棧檢查機制確保不會(huì )出現堆棧溢出錯誤,因為,.NET框架程序的堆棧是安全的。

堆棧的性能很高,但是不太靈活,只能分配固定大小的數據類(lèi)型,而且數據的生存期必須是有序的。

b. 托管堆

托管堆是由.NET框架公共語(yǔ)言運行時(shí)的自動(dòng)內存管理來(lái)實(shí)現的。初始化新進(jìn)程時(shí),公共語(yǔ)言運行時(shí)就會(huì )為進(jìn)程保留一個(gè)連續的地址空間區域,就是托管堆。

托管堆維護著(zhù)一個(gè)指針,用它指向將在堆中分配的下一個(gè)對象的地址。每創(chuàng )建一個(gè)對象,都會(huì )在上一個(gè)對象的后面的地址空間內為它分配內存。只要地址空間可用,垃圾回收器就會(huì )繼續以這種方式來(lái)為新對象分配空間。

垃圾回收器在執行回收的時(shí)候,會(huì )釋放應用程序不再使用的對象的內存。它通過(guò)檢查應用程序的根來(lái)確定不再使用的對象。每個(gè)應用程序都有一組根。每個(gè)根或引用托管堆中的對象,或者設置為空。應用程序的根包含全局對象指針、靜態(tài)對象指針、線(xiàn)程堆棧中的局部變量和引用對象參數,以及CPU寄存器。

垃圾回收器可以訪(fǎng)問(wèn)由即時(shí)編譯和運行維護的活動(dòng)根的列表。垃圾回收器對照列表檢查應用程序的根,并在此過(guò)程中創(chuàng )建一個(gè)圖表,圖表中包含所有可以從這些根訪(fǎng)問(wèn)的對象。

c. 非托管堆

非托管堆不受.NET框架的控制,是windows管理內存,因此.NET框架的垃圾回收器不能回收釋放非托管堆中的內存,需要程序員自己負責釋放。

2.類(lèi)型

C#是完全面向對象的語(yǔ)言,它的所有數據類(lèi)型都是類(lèi)。C#語(yǔ)言的類(lèi)型劃分為兩大類(lèi):引用類(lèi)型和值類(lèi)型。

值類(lèi)型和引用類(lèi)型的不同之處在于:值類(lèi)型的變量直接包含數據,而引用類(lèi)型的變量存儲對數據的引用(reference)。于引用類(lèi)型,兩個(gè)變量可能引用同一個(gè)對象,因為對一個(gè)變量的操作可能影響另一個(gè)變量所引用的對象。對于值類(lèi)型,每個(gè)變量都有自己的數據副本,對一個(gè)變量的操作不可能影響到另一個(gè)變量。

C#的類(lèi)型是統一的,每個(gè)類(lèi)型都直接或者間接的從object類(lèi)派生,而object是所有類(lèi)型的最終基類(lèi)。引用類(lèi)型的值被當做“對象”來(lái)處理。值類(lèi)型的值則通過(guò)執行裝箱/拆箱操作按對象處理。由于這種統一性,使用object類(lèi)型的通用庫既可以用于引用類(lèi)型,又可以用于值類(lèi)型。

類(lèi)別

說(shuō)明

值類(lèi)型

簡(jiǎn)單類(lèi)型

有符號整型:sbyte、short、int、long

無(wú)符號整型:byte、ushort、unit、ulong

Unicode字符:char

IEEE浮點(diǎn)型:float、double

高精度小數:decimal

布爾型:bool

枚舉類(lèi)型

Enum E{....}形式的用戶(hù)定義的類(lèi)型

結構類(lèi)型

Struct S{....}形式用定義的類(lèi)型

引用類(lèi)型

類(lèi)類(lèi)型

所有其他類(lèi)型的最終基類(lèi):object

Unicode字符串:string

Class C{....}形式的用戶(hù)自定義類(lèi)型

接口

Interface I{....}形式的用戶(hù)定義的類(lèi)型

數組

一維和多維數組

委托

Delegate T D(....)形式

基本類(lèi)型

編譯器直接支持的類(lèi)型叫做基本類(lèi)型(primary type)?;绢?lèi)型名都是關(guān)鍵字,代碼可以使用簡(jiǎn)單的語(yǔ)法來(lái)操作基本類(lèi)型,基本類(lèi)型是構造其他類(lèi)型的基礎數據類(lèi)型。

C#的基本類(lèi)型實(shí)際都是.NET框架類(lèi)庫中的CTS類(lèi)型的映射,都是從System.Object派生而來(lái)的。因此,一種基本類(lèi)型實(shí)際上都是一種CTS類(lèi)型的別名。

3.類(lèi)

a. 隱藏方法

在子類(lèi)中可以使用與基類(lèi)的成員相同的名稱(chēng)或簽名來(lái)聲明成員,這種情形下,在子類(lèi)中不可以訪(fǎng)問(wèn)基類(lèi)的同名成員,這叫做子類(lèi)成員的隱藏類(lèi)基本成員。在子類(lèi)成員的聲明中使用new修飾符。

new public void F()

{

}

b. 虛方法和重寫(xiě)方法

虛方法帶virtual修飾符,稱(chēng)為虛方法。不允許與static、abstract、override修飾符同時(shí)使用。

如果實(shí)例中含有override修飾符,則稱(chēng)該方法為重寫(xiě)方法。重寫(xiě)方法只能用于重寫(xiě)基類(lèi)的虛方法。

4.結構、枚舉

結構主要用于組織數據,它的優(yōu)勢是,由于是值類(lèi)型,因此開(kāi)銷(xiāo)小,效率高。結構不支持繼承,因此始終是密封的,但可以實(shí)現接口。

枚舉是一種獨特的數據類(lèi)型,,可以顯示的聲明byte、sbyte、short、ushort、int、unit、longulong。不能是char。

System.Enum類(lèi)型是所有枚舉類(lèi)型的抽象基類(lèi),它本身并不是枚舉類(lèi)型,而是一個(gè)類(lèi)。System.Enum類(lèi)的派生方法和屬性可以用在枚舉類(lèi)型的值上。比如GetNames可以用來(lái)獲取所有的枚舉名,GetValues可以用來(lái)獲取所有的枚舉值。

5.集合

C#的集合是基于System.Collections.ICollection接口、System.Collections.IList接口、

System.Collections.IDictionary接口來(lái)實(shí)現的。IList接口和IDictionary接口都是從ICollection接口派生的,因此所有集合都間接或直接的實(shí)現了ICollection接口。

基于IList接口的集合(Array、ArrayList、List)或者直接基于ICollection接口的集合(Queue、Stack、SortedList)來(lái)說(shuō),每個(gè)元素只能包含一個(gè)值,對于基于IDictionary接口的集合(如Hashtable、SortedList)來(lái)說(shuō),每個(gè)元素都有一個(gè)鍵和一個(gè)值。

System.Collections.ICollection繼承了System.Collections.IEnumerable,并沒(méi)有添加任何成員,完全等價(jià)于IEnumerable。因此所有的集合類(lèi)都必須實(shí)現System.Collections.IEnumerable接口,實(shí)現了這個(gè)接口就能一一列舉集合類(lèi)包含的數據元素:

public interface IEnumerable{

IEnumerator GetEnumerator();

}

GetEnumerator方法返回一個(gè)能夠訪(fǎng)問(wèn)集合中數組的列舉器,必須實(shí)現System.Collections.IEnumerator 接口:

public interface IEnumerator {

Boolean MoveNext();

Object Current{get;}

Void Reset();

}

列舉器用于讀取集合中的數據,但不能輕易修改基礎集合。創(chuàng )建集合對象后,列舉器應首先定位于集合中第一個(gè)元素前。Reset方法用于將列舉器返回到此位置,此時(shí),調用Current屬性會(huì )引發(fā)異常。

容量和計數

前者是可以包含的元素的數目。計數是它實(shí)際包含的元素的數目。

下限

集合的下限是其第一個(gè)元素的索引。System.Collections命名空間中的所有索引金和下限均為0。Array下限默認也是0,但是使用CreateInstance創(chuàng )建Array類(lèi)的實(shí)例可以定義不同的下限。

列舉器

列舉器用于循環(huán)訪(fǎng)問(wèn)集合的對象,可以看成是指向集合中任何元素的可移動(dòng)的指針。一個(gè)列舉器只能與一個(gè)集合關(guān)聯(lián),但一個(gè)集合可以具有多個(gè)列舉器。

同步成員

同步在訪(fǎng)問(wèn)集合的元素時(shí)提供線(xiàn)程安全。默認情況下,集合不是線(xiàn)程安全的。System.Collections只有幾個(gè)類(lèi)提供Synchronize方法,該方法能夠超越集合創(chuàng )建線(xiàn)程安全包裝。但是,System.Collections命名空間中的所有類(lèi)型都提供SyncRoot屬性,可派生類(lèi)創(chuàng )建自己的線(xiàn)程安全包裝。還提供了IsSynchronized屬性以確定集合是否是線(xiàn)程安全的。

CopyTo方法

CopyTo方法可將所有集合復制到數組中;但是,新數組中元素的順序基于列舉器返回他們的順序。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
闡述集合類(lèi)的接口(IEnumerable,IEnumerator,ICollection,...
C# IEnumerable<T>、IEnumerator<T>、List<T>、ArrayList、[]數組各各的區別
IEnumerable的用法
利用C#實(shí)現 Iterator 迭代器模式
關(guān)于System.Collections空間
.Net內存分配筆記
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久