真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C#泛型的應(yīng)用及優(yōu)點(diǎn)

這篇文章主要介紹“C#泛型的應(yīng)用及優(yōu)點(diǎn)”,在日常操作中,相信很多人在C#泛型的應(yīng)用及優(yōu)點(diǎn)問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”C#泛型的應(yīng)用及優(yōu)點(diǎn)”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

創(chuàng)新新互聯(lián),憑借十多年的成都網(wǎng)站制作、做網(wǎng)站經(jīng)驗(yàn),本著真心·誠(chéng)心服務(wù)的企業(yè)理念服務(wù)于成都中小企業(yè)設(shè)計(jì)網(wǎng)站有上1000家案例。做網(wǎng)站建設(shè),選創(chuàng)新互聯(lián)。

C# 泛型應(yīng)用分析

因?yàn)?IL 和 CLR 為泛型提供本機(jī)支持,所以大多數(shù)符合 CLR 的語(yǔ)言都可以利用一般類(lèi)型。例如,下面這段 Visual Basic .NET 代碼使用代碼塊 2 的一般堆棧:

Dim stack As Stack(Of Integer)  stack = new Stack(Of Integer)  stack.Push(3)  Dim number As Integer  number = stack.Pop()

您可以在類(lèi)和結(jié)構(gòu)中使用泛型。以下是一個(gè)有用的一般點(diǎn)結(jié)構(gòu):

public struct Point  {          public T X;          public T Y;  }

可以使用該一般點(diǎn)來(lái)表示整數(shù)坐標(biāo),例如:

Point point;  point.X = 1;  point.Y = 2;

或者,可以使用它來(lái)表示要求浮點(diǎn)精度的圖表坐標(biāo):

Point point;  point.X = 1.2;  point.Y = 3.4;

除了到目前為止介紹的基本泛型語(yǔ)法以外,C# 2.0 還具有一些泛型特定的語(yǔ)法。例如,請(qǐng)考慮代碼塊 2 的 Pop() 方法。假設(shè)您不希望在堆棧為空時(shí)引發(fā)異常,而是希望返回堆棧中存儲(chǔ)的類(lèi)型的默認(rèn)值。如果您使用基于 Object 的堆棧,則可以簡(jiǎn)單地返回 null,但是您還可以通過(guò)值類(lèi)型來(lái)使用一般堆棧。為了解決該問(wèn)題,您可以使用 default() 運(yùn)算符,它返回類(lèi)型的默認(rèn)值。

下面說(shuō)明如何在 Pop() 方法的實(shí)現(xiàn)中使用默認(rèn)值:

public T Pop()  {     m_StackPointer--;     if(m_StackPointer >= 0)     {        return m_Items[m_StackPointer];     }     else    {        m_StackPointer = 0;        return default(T);     }  }

引用類(lèi)型的默認(rèn)值為 null,而值類(lèi)型(例如,整型、枚舉和結(jié)構(gòu))的默認(rèn)值為全零(用零填充相應(yīng)的結(jié)構(gòu))。因此,如果堆棧是用字符串構(gòu)建的,則 Pop() 方法在堆棧為空時(shí)返回 null;如果堆棧是用整數(shù)構(gòu)建的,則 Pop() 方法在堆棧為空時(shí)返回零。

C# 泛型應(yīng)用之多個(gè)一般類(lèi)型

單個(gè)類(lèi)型可以定義多個(gè)一般類(lèi)型參數(shù)。例如,請(qǐng)考慮代碼塊 3 中顯示的一般鏈表。

C# 泛型應(yīng)用代碼塊之一般鏈表

class Node  {     public K Key;     public T Item;     public Node NextNode;     public Node()     {        Key      = default(K);        Item     = defualt(T);        NextNode = null;     }     public Node(K key,T item,Node nextNode)     {        Key      = key;        Item     = item;        NextNode = nextNode;     }  }   public class LinkedList  {     Node m_Head;     public LinkedList()     {        m_Head = new Node();     }     public void AddHead(K key,T item)     {        Node newNode = new Node(key,item,m_Head.NextNode);        m_Head.NextNode = newNode;     }  }

該鏈表存儲(chǔ)節(jié)點(diǎn):

class Node  {...}

每個(gè)節(jié)點(diǎn)都包含一個(gè)鍵(屬于一般類(lèi)型參數(shù) K)和一個(gè)值(屬于一般類(lèi)型參數(shù) T)。每個(gè)節(jié)點(diǎn)還具有對(duì)該列表中下一個(gè)節(jié)點(diǎn)的引用。鏈表本身根據(jù)一般類(lèi)型參數(shù) K 和 T 進(jìn)行定義:

public class LinkedList  {...}

這使該列表可以公開(kāi)像 AddHead() 一樣的一般方法:

public void AddHead(K key,T item);

每當(dāng)您聲明使用泛型的類(lèi)型的變量時(shí),都必須指定要使用的類(lèi)型。但是,指定的類(lèi)型實(shí)參本身可以為一般類(lèi)型參數(shù)。例如,該鏈表具有一個(gè)名為 m_Head 的 Node 類(lèi)型的成員變量,用于引用該列表中的第一個(gè)項(xiàng)。m_Head 是使用該列表自己的一般類(lèi)型參數(shù) K 和 T 聲明的。

Node m_Head;

您需要在實(shí)例化節(jié)點(diǎn)時(shí)提供類(lèi)型實(shí)參;同樣,您可以使用該鏈表自己的一般類(lèi)型參數(shù):

public void AddHead(K key,T item)  {     Node newNode = new Node(key,item,m_Head.NextNode);     m_Head.NextNode = newNode;  }

請(qǐng)注意,該列表使用與節(jié)點(diǎn)相同的名稱(chēng)來(lái)表示一般類(lèi)型參數(shù)完全是為了提高可讀性;它也可以使用其他名稱(chēng),例如:

public class LinkedList  {...}

或:

public class LinkedList  {...}

在這種情況下,將 m_Head 聲明為:

Node m_Head;

當(dāng)客戶(hù)端使用該鏈表時(shí),該客戶(hù)端必須提供類(lèi)型實(shí)參。該客戶(hù)端可以選擇整數(shù)作為鍵,并且選擇字符串作為數(shù)據(jù)項(xiàng):

LinkedList list = new LinkedList();  list.AddHead(123,"AAA");

但是,該客戶(hù)端可以選擇其他任何組合(例如,時(shí)間戳)來(lái)表示鍵:

LinkedList list = new LinkedList();  list.AddHead(DateTime.Now,"AAA");

有時(shí),為特定類(lèi)型的特殊組合起別名是有用的??梢酝ㄟ^(guò) using 語(yǔ)句完成該操作,如代碼塊 4 中所示。請(qǐng)注意,別名的作用范圍是文件的作用范圍,因此您必須按照與使用 using 命名空間相同的方式,在項(xiàng)目文件中反復(fù)起別名。

C# 泛型應(yīng)用代碼塊之 一般類(lèi)型別名

using List = LinkedList;   class ListClient  {     static void Main(string[] args)     {        List list = new List();        list.AddHead(123,"AAA");     }  }

到此,關(guān)于“C#泛型的應(yīng)用及優(yōu)點(diǎn)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!


新聞名稱(chēng):C#泛型的應(yīng)用及優(yōu)點(diǎn)
文章來(lái)源:http://weahome.cn/article/gigeis.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部