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

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è)
美女丝袜美腿魅惑男人| 精品中文人妻中文字幕| 2020年最新国产三级网站| 亚洲国产欧美在线91| 欧美三级精品三级在线| 亚洲一区二区日本乱码| 黑人巨大一区二区三区| 日韩久久精品国产亚洲av成人| 亚洲字幕中文在线乱码mv| 国产高跟丝袜女王调教| av在线免费观看大全| 在线免费观看日韩黄片| 中文字幕在线成人影院| 禁止18观看视频软件| 国产不卡高清视频在线| 亚洲精品日本一区二区| 亚洲欧美日韩有码一区| 天堂av好男人亚洲精品| 亚洲综合美女极品啪啪啪| 蜜臀99久久精品久久久| 欧美日韩在线视频一区| 人妻中文字幕在线看粉嫩| av天堂在线观看网站| 免费看av网站一区二区| 日本午夜一区二区在线观看| 国产欧美亚洲精品一区二区| 欧美一区二区三区久久束缚| 色哟哟网站在线精品视频| 中文字幕人妻久久一区| 久久综合久久狠狠激情| 亚洲精品日本一区二区| 亚洲综合色视频免费在线播放| 成年人免费在线观看毛片| 亚洲乱码一区二区av| 黄色亚洲日本欧美在线观看| 丰满人妻在线一区二区三区| 国产片中文字幕在线观看| 91日韩中文字幕在线观看| 日韩中字伦理熟妇人妻| 亚洲成综合人在线播放| 成人精品欧美欧美一级乱黄|