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

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://www.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è)
99久久热这里只有精品| 精品国产50部农村老熟女av| 亚洲精品国产熟女高潮 | 国产日本欧美一区二区三区 | 在线国产精品中文字幕| 久久久国产精品调教网站| 日韩精品一二三黄色一级| 国产成人三级视频网站| 欧美高清在线观看视频| 黄色av手机在线观看| 少妇诱惑一区二区三区| 亚洲国产成人av精品精品国产自| 日本一区二区三区高清| 国产精品老熟女一区二区| 国产精品亚洲一区二区在| 精品国产综合一区二区三区| 日韩av高清免费播放| 熟女人妻一区二区三区免费看| 一区二区三区高清人妻日本| 国产一区精品在线免费看| 欧美激情一区二区亚洲专区| 免费高清av中文字幕| 国产精品黑丝美女91| 中文字幕在线成人影院| 亚洲欧美日韩精品av| 国产亚洲av看码精品永久| 高潮国产精品一区二区| 91精品国产欧美在线| 99热国产这里只有精品| 日韩欧美黄网站免费看| 亚洲欧美综合另类久久| 精品亚洲av一区二区三区| 国产91在线拍揄自揄| 国产自拍最新在线视频| 中文字幕欧美精品日韩人妻| 性生活视频在线观看免费| 91色综合久久久久婷婷| 少妇的诱惑免费在线播放| 久久se精品人妻一区二区三区| 日韩国产一区二区三区精品| 人妻精品中文字幕一区二区在线|