freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

net的核心知識(shí)匯總-資料下載頁(yè)

2025-04-14 01:05本頁(yè)面
  

【正文】 args) { Genericer MyClsMyGen=newGenericerMyCls()。 (().Name)。 } } 使用new實(shí)現(xiàn)多態(tài)。 這不是我熟悉的話題,詳細(xì)的內(nèi)容可以參見《多態(tài)與 new [C]》,這里有較詳細(xì)的論述。 3. 深入淺出作為修飾符和約束的情況,不是很難理解的話題,正如我們看到本文開篇提出的問題,也大多集中在new作為運(yùn)算符的情況,因此我們研究的重點(diǎn)就是揭開new作為運(yùn)算符的前世今生。Jeffrey Richter在其著作中,極力推薦讀者使用ILDASM工具查看IL語言細(xì)節(jié),在我認(rèn)為這真是一條不錯(cuò)的建議,也給了自己很多提高的空間挖掘。因此,以下是本人的一點(diǎn)建議,我將在后續(xù)的系列中,關(guān)于學(xué)習(xí)方法論的討論中深入探討,這里只是順便小議,希望有益于大家。1 不斷的學(xué)習(xí)代碼;2 經(jīng)??纯碔L語言的運(yùn)行細(xì)節(jié)。 文歸正題,new運(yùn)算符用于返回一個(gè)引用,指向系統(tǒng)分配的托管堆的內(nèi)存地址。因此,在此我們以Reflector工具,來了解以下new操作符執(zhí)行的背后,隱藏著什么玄機(jī)。 首先我們實(shí)現(xiàn)一段最簡(jiǎn)單的代碼,然后分析其元數(shù)據(jù)的實(shí)現(xiàn)細(xì)節(jié),來探求new在創(chuàng)建對(duì)象時(shí)到做了什么?new作為運(yùn)算符usingSystem。namespace{ classMyClass { privateint_id。 publicMyClass(intid) { _id=id。 } } structMyStruct { privatestring_name。 publicMyStruct(stringname) { _name=name。 } } classNewReflecting { publicstaticvoidMain(string[]args) { inti。 intj=newint()。 MyClassmClass=newMyClass(123)。 MyStructmStruct=newMyStruct(MyStruct)。 } }}使用Reflector工具反編譯產(chǎn)生的IL代碼如下為:IL元數(shù)據(jù)分析.methodpublichidebysigstaticvoidMain(string[]args)cilmanaged{ .entrypoint .maxstack2 .localsinit( [0]int32num, [1]int32num2, [2]classclass2, [3]valuetypestruct2) L_0000:nop //初始化j為0 L_0001: L_0002: //使用newobj指令創(chuàng)建新的對(duì)象,并調(diào)用構(gòu)造函數(shù)以0x76(123的16進(jìn)制)初始化 L_0003:0x7b L_0005:newobjinstancevoid::.ctor(int32) L_000a: //加載“MyStruct” L_000b:struct2 L_000d:ldstrMyStruct //調(diào)用構(gòu)造函數(shù)執(zhí)行初始化 L_0012:callinstancevoid::.ctor(string) L_0017:nop L_0018:ret}從而可以得出以下結(jié)論: new一個(gè)class時(shí),new完成了以下兩個(gè)方面的內(nèi)容:一是調(diào)用newobj命令來為實(shí)例在托管堆中分配內(nèi)存;二是調(diào)用構(gòu)造函數(shù)來實(shí)現(xiàn)對(duì)象初始化。 new一個(gè)struct時(shí),new運(yùn)算符用于調(diào)用其帶構(gòu)造函數(shù),完成實(shí)例的初始化。 new一個(gè)int時(shí),new運(yùn)算符用于初始化其值為0。 另外必須清楚,值類型和引用類型在分配內(nèi)存時(shí)是不同的,值類型分配于線程的堆棧(stack)上,并變量本身就保存其實(shí)值,因此也不受GC的控制,;而引用類型變量,包含了指向托管堆的引用,內(nèi)存分配于托管堆(managed heap)上,內(nèi)存收集由GC完成。 另外還有以下規(guī)則要多加注意: new運(yùn)算符不可重載。 new分配內(nèi)存失敗,將引發(fā)OutOfMemoryException異常。 對(duì)于基本類型來說,使用new操作符來進(jìn)行初始化的好處是,某些構(gòu)造函數(shù)可以完成更優(yōu)越的初始化操作,而避免了不高明的選擇,例如:stringstr=newstring(39。*39。,100)。stringstr=newstring(newchar[]{39。a39。,39。b39。,39。c39。})。而不是stringstr=***************************************。4. 結(jié)論 我能說的就這么多了,至于透了沒透,作者的能量也就這么多了。希望園子的大牛們常來扔塊磚頭,對(duì)我也是一種莫大的促進(jìn)。但是作為基本的原理和應(yīng)用,我想對(duì)大部分的需求是滿足了。希望這種力求深入淺出的介紹,能給你分享new關(guān)鍵字和其本質(zhì)的來龍去脈能有所幫助。言歸正傳,開篇的幾個(gè)題目,不知讀者是否有了各自的答案,我們不妨?xí)乘?,做更深入的討論,以便揭開其真實(shí)的面紗。參考文獻(xiàn) (USA)Stanley , C Primer(USA)David Chappell Understanding .NET第六回:深入淺出關(guān)鍵字base和this本文將介紹以下內(nèi)容: 面向?qū)ο蠡靖拍? base關(guān)鍵字深入淺出 this關(guān)鍵字深入淺出 1.引言new關(guān)鍵字引起了大家的不少關(guān)注,尤其感謝Anders Liu的補(bǔ)充,讓我感覺博客園賦予的交流平臺(tái)真的無所不在。所以,我們就有必要繼續(xù)這個(gè)話題,把我認(rèn)為最值得關(guān)注的關(guān)鍵字開展下去,本文的重點(diǎn)是訪問關(guān)鍵字(Access Keywords):base和this。雖然訪問關(guān)鍵字不是很難理解的話題,我們還是有可以深入討論的地方來理清思路。還是老辦法,我的問題先列出來,您是否做好了準(zhǔn)備。1. 是否可以在靜態(tài)方法中使用base和this,為什么? 2. base常用于哪些方面?this常用于哪些方面? 3. 可以base訪問基類的一切成員嗎? 4. 如果有三層或者更多繼承,那么最下級(jí)派生類的base指向那一層呢?,如果以base訪問,則應(yīng)該是直接父類實(shí)例呢,還是最高層類實(shí)例呢? 5. 以base和this應(yīng)用于構(gòu)造函數(shù)時(shí),繼承類對(duì)象實(shí)例化的執(zhí)行順序如何? 2. 基本概念base和this在C中被歸于訪問關(guān)鍵字,顧名思義,就是用于實(shí)現(xiàn)繼承機(jī)制的訪問操作,來滿足對(duì)對(duì)象成員的訪問,從而為多態(tài)機(jī)制提供更加靈活的處理方式。 base關(guān)鍵字其用于在派生類中實(shí)現(xiàn)對(duì)基類公有或者受保護(hù)成員的訪問,但是只局限在構(gòu)造函數(shù)、實(shí)例方法和實(shí)例屬性訪問器中,MSDN中小結(jié)的具體功能包括: 調(diào)用基類上已被其他方法重寫的方法。 指定創(chuàng)建派生類實(shí)例時(shí)應(yīng)調(diào)用的基類構(gòu)造函數(shù)。 this關(guān)鍵字其用于引用類的當(dāng)前實(shí)例,也包括繼承而來的方法,通??梢噪[藏this,MSDN中的小結(jié)功能主要包括: 限定被相似的名稱隱藏的成員 將對(duì)象作為參數(shù)傳遞到其他方法 聲明索引器 3. 深入淺出示例為上下面以一個(gè)小示例來綜合的說明,base和this在訪問操作中的應(yīng)用,從而對(duì)其有個(gè)概要了解,更詳細(xì)的規(guī)則和深入我們接著闡述。本示例沒有完全的設(shè)計(jì)概念,主要用來闡述base和this關(guān)鍵字的使用要點(diǎn)和難點(diǎn)闡述,具體的如下:base和this示例usingSystem。namespace{ publicclassAction { publicstaticvoidToRun(Vehiclevehicle) { ({0}isrunning.,())。 } } publicclassVehicle { privatestringname。 privateintspeed。 privatestring[]array=newstring[10]。 publicVehicle() { } //限定被相似的名稱隱藏的成員 publicVehicle(stringname,intspeed) { =name。 =speed。 } publicvirtualvoidShowResult() { (Thetopspeedof{0}is{1}.,name,speed)。 } publicvoidRun() { //傳遞當(dāng)前實(shí)例參數(shù) (this)。 } //聲明索引器,必須為this,這樣就可以像數(shù)組一樣來索引對(duì)象 publicstringthis[intparam] { get{returnarray[param]。} set{array[param]=value。} } } publicclassCar:Vehicle { //派生類和基類通信,以base實(shí)現(xiàn),基類首先被調(diào)用 //指定創(chuàng)建派生類實(shí)例時(shí)應(yīng)調(diào)用的基類構(gòu)造函數(shù) publicCar() :base(Car,200) {} publicCar(stringname,intspeed) :this() {} publicoverridevoidShowResult() { //調(diào)用基類上已被其他方法重寫的方法 ()。 (It39。sacar39。sresult.)。 } } publicclassAudi:Car { publicAudi() :base(Audi,300) {} publicAudi(stringname,intspeed) :this() { } publicoverridevoidShowResult() { //由三層繼承可以看出,base只能繼承其直接基類成員 ()。 ()。 (It39。saudi39。sresult.)。 } } publicclassBaseThisTester { publicstaticvoidMain(string[]args) { Audiaudi=newAudi()。 au
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1