欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C#中怎么實(shí)現(xiàn)泛型處理

C#中怎么實(shí)現(xiàn)泛型處理,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

創(chuàng)新互聯(lián)成立與2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元老河口做網(wǎng)站,已為上家服務(wù),為老河口各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575

C#泛型處理的問題陳述

考慮一種普通的、提供傳統(tǒng) Push() 和 Pop() 方法的數(shù)據(jù)結(jié)構(gòu)(例如,堆棧)。在開發(fā)通用堆棧時(shí),您可能愿意使用它來存儲各種類型的實(shí)例。在 C# 1.1 下,您必須使用基于 Object 的堆棧,這意味著,在該堆棧中使用的內(nèi)部數(shù)據(jù)類型是難以歸類的 Object,并且堆棧方法與 Object 交互:

public class Stack  {     object[] m_Items;      public void Push(object item)     {...}     public object Pop()     {...}  }

C#泛型處理代碼塊

顯示基于 Object 的堆棧的完整實(shí)現(xiàn)。因?yàn)?Object 是規(guī)范的 .NET 基類型,所以您可以使用基于 Object 的堆棧來保持任何類型的項(xiàng)(例如,整數(shù)):

Stack stack = new Stack();  stack.Push(1);  stack.Push(2);  int number = (int)stack.Pop();

基于 Object 的堆棧

public class Stack  {     readonly int m_Size;      int m_StackPointer = 0;     object[] m_Items;      public Stack():this(100)     {}        public Stack(int size)     {        m_Size = size;        m_Items = new object[m_Size];     }     public void Push(object item)     {        if(m_StackPointer >= m_Size)            throw new StackOverflowException();               m_Items[m_StackPointer] = item;        m_StackPointer++;     }     public object Pop()     {        m_StackPointer--;        if(m_StackPointer >= 0)        {           return m_Items[m_StackPointer];        }        else       {           m_StackPointer = 0;           throw new InvalidOperationException(          "Cannot pop an empty stack");        }     }  }

但是,基于 Object 的解決方案存在兩個(gè)問題。***個(gè)問題是性能。在使用值類型時(shí),必須將它們裝箱以便推送和存儲它們,并且在將值類型彈出堆棧時(shí)將其取消裝箱。裝箱和取消裝箱都會根據(jù)它們自己的權(quán)限造成重大的性能損失,但是它還會增加托管堆上的壓力,導(dǎo)致更多的垃圾收集工作,而這對于性能而言也不太好。即使是在使用引用類型而不是值類型時(shí),仍然存在性能損失,這是因?yàn)楸仨殢?Object 向您要與之交互的實(shí)際類型進(jìn)行強(qiáng)制類型轉(zhuǎn)換,從而造成強(qiáng)制類型轉(zhuǎn)換開銷:

Stack stack = new Stack();  stack.Push("1");  string number = (string)stack.Pop();

基于 Object 的解決方案的第二個(gè)問題(通常更為嚴(yán)重)是類型安全。因?yàn)榫幾g器允許在任何類型和 Object 之間進(jìn)行強(qiáng)制類型轉(zhuǎn)換,所以您將丟失編譯時(shí)類型安全。例如,以下代碼可以正確編譯,但是在運(yùn)行時(shí)將引發(fā)無效強(qiáng)制類型轉(zhuǎn)換異常:

Stack stack = new Stack();  stack.Push(1);  //This compiles, but is not type safe, and will throw an exception:   string number = (string)stack.Pop();

您可以通過提供類型特定的(因而是類型安全的)高性能堆棧來克服上述兩個(gè)問題。對于整型,可以實(shí)現(xiàn)并使用 IntStack:

public class IntStack  {     int[] m_Items;      public void Push(int item){...}     public int Pop(){...}  }   IntStack stack = new IntStack();  stack.Push(1);  int number = stack.Pop();

對于字符串,可以實(shí)現(xiàn) StringStack:

public class StringStack  {     string[] m_Items;      public void Push(string item){...}     public string Pop(){...}  }  StringStack stack = new StringStack();  stack.Push("1");  string number = stack.Pop();

C#泛型處理問題的出現(xiàn)必然性:

遺憾的是,以這種方式解決性能和類型安全問題,會引起第三個(gè)同樣嚴(yán)重的問題 — 影響工作效率。編寫類型特定的數(shù)據(jù)結(jié)構(gòu)是一項(xiàng)乏味的、重復(fù)性的且易于出錯(cuò)的任務(wù)。在修復(fù)該數(shù)據(jù)結(jié)構(gòu)中的缺陷時(shí),您不能只在一個(gè)位置修復(fù)該缺陷,而必須在實(shí)質(zhì)上是同一數(shù)據(jù)結(jié)構(gòu)的類型特定的副本所出現(xiàn)的每個(gè)位置進(jìn)行修復(fù)。此外,沒有辦法預(yù)知未知的或尚未定義的將來類型的使用情況,因此還必須保持基于 Object 的數(shù)據(jù)結(jié)構(gòu)。結(jié)果,大多數(shù) C# 1.1 開發(fā)人員發(fā)現(xiàn)類型特定的數(shù)據(jù)結(jié)構(gòu)不實(shí)用,并且選擇使用基于 Object 的數(shù)據(jù)結(jié)構(gòu),盡管它們存在缺點(diǎn)。

看完上述內(nèi)容,你們掌握C#中怎么實(shí)現(xiàn)泛型處理的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)頁題目:C#中怎么實(shí)現(xiàn)泛型處理
URL鏈接:http://aaarwkj.com/article10/gjdsgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、網(wǎng)站策劃、微信公眾號、ChatGPT、網(wǎng)站改版、App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
久章草在线免费视频播放| 两性色午夜视频免费网站| 手机在线观看av网站| 国产精品久久久亚洲不卡| 国产亚洲精品视频免费| 日本sm视频在线观看| 亚洲综合中文字幕久久网址| 青青草针对华人在线视频| 麻豆午夜视频免费在线观看| 91久久久久久人妻精品粉嫩| 日韩亚洲人成网站在线播放| 国产精品麻豆色哟哟av| 久久国产精品亚洲看片| 性知音国产精品粉色视频| 中文字幕av免费专区| 欧美日韩国产另类久久| 熟女aaa一区二区午夜| 国产亚洲一区二区视频| 国产自偷一区二区三区| 日韩中文字幕在线二区| 日日骚岛国中文字幕av| 加勒比中文字幕日本道| 久久男女激情免费视频| av在线观看亚洲天堂| 日韩一区二区三区av观看| 亚洲成人午夜激情的三级网| 日韩av黄色制服在线网站| 亚洲区一区二区三区精品| 中国毛片一区二区三区| 男人天堂av东京热伊人| 日本高清不卡中文字幕| 清纯美女爱爱高潮av| 亚洲国内一区二区三区| 日韩高清午夜片在线观看| 欧美日韩另类综合一区| 在线观看国产激情免费视频| 日韩av一区二区免费在线观看| 久久亚洲精品1区2区| 欧美亚洲五月婷婷激情| 国产精品白浆大屁股一区二区三| 午夜福利视频欧美成人|