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

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è)
91啪在线观看91色| 亚洲国产女人精品久久久| 伊人激情久久综合中文字幕| 国产成人亚洲精品专区高清| 亚洲国产精品一区二区三区在线 | 九九国产精品免费视频| 少妇按摩高潮呻吟av| 欧美日韩亚洲综合在线| 97国产精品成人免费视频| 久久久这里只有精品99| 在线亚洲精品一区二区| 久久久偷拍美女撒尿尿| 国内自拍韩国资源在线| 亚洲国产欧美日韩国产| 色哟哟视频免费在线观看| 黄色片一区二区三区四区| 日韩一级久久精品理论| 亚洲成人av日韩在线| 亚洲午夜一区二区精品| 国产在线一区二区三区蜜桃| 国产91人妻精品一区二区三区| 日本熟妇中文字幕系列| 韩日av一区二区三区| 91精品在线观看首页| 中文字幕成人资源网站| 日本少妇激情后入嗯啊| 日本午夜福利视频在线观看| 精品国产亚洲av未满十八| 五月婷婷六月丁香伊人网| 午夜福利大片在线观看视频| 成人18禁视频免费看| 麻豆精品情欲人妻二区| 厕所偷拍视频一区二区三区| 成人黄色18免费网站| 亚洲乱码中文字幕在线观看| 成人黄色av在线看| 开裆丝袜高跟啪啪高潮av| 日日淫夜夜操熟女视频| 国产男女在线视频观看| 色爱区偷拍人妻中文字幕| 国产又粗又长又爽网站|