在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

第9章 辦法[《.net框架程序設計》讀書筆記]

第9章 辦法[《.net框架程序設計》讀書筆記]

更新時間:2022-05-16 文章作者:未知 信息來源:網絡 閱讀次數:

第九章 方法




一、 實例構造器

1、 前面提到用new操作符創建對象時的三部曲:

l 為對象分配內存

l 初始化對象的附加成員(方法表指針和SyncBlockIndex)

l 調用實例構造器初始化實例狀態

在分配內存時,系統將所有內存位置均置為0值,這就是為什么字段初始化而未賦值時均為0或null值。



不調用實例構造器的情況:

l 調用Object.MemberwiseClone()方法創建實例(分配內存;初始化附加成員;將源對象字節拷貝到新創建的對象)

l 反序列化對象時

2、 為避免為實例字段產生過多的構造器代碼,應避免在聲明字段時為字段符初值,而是在無參構造器中為它們符初值,在其他重載的構造器中調用無參構造器。



3、 值類型實例構造器

l C#編譯器不會自動調用其構造器,必須顯式調用構造器才能起作用

l C#編譯器不允許為值類型定義無參實例構造器(下面會介紹可以定義無參類型構造器)

l 不能為結構中的字段在聲明的同時賦初值,可通過定義帶參構造器的方式進行

l 必須在結構的構造器中為所有字段賦初值

二、 類型構造器

1、 類型構造器的一些限制:

l 不能帶任何參數

l 類型構造器總為私有的,不能用其他訪問修飾符

2、類型構造器被調用的時機:

l 第一個實例被創建,或者類型的第一個字段或成員第一次被訪問之前

l 非繼承靜態字段被第一次訪問之前

類型構造器在類型的生命周期中只被調用一次;

3、一些限制:

l 若類型構造器中拋出異常,則該類型變成不可訪問,訪問其中的任何字段或方法均會拋出System.TypeInitializationException異常

l 類型構造器只能訪問類型的靜態字段

l 類型構造器不應該調用基類型的類型構造器,因靜態字段并非繼承而是編譯時靜態綁定

三、 操作符重載

1、 操作符重載

C#中對操作符重載的一些限制:

l 必須聲明為public static

l 必須有一個參數為操作符所屬類型

l 不能改變操作符原始定義的引數個數

l 若定義了true操作符也必須同時定義false操作符,二者都必須返回bool值

l ++、--操作符必須返回其所隸屬之類型的一個實例

l 可被重載的一元操作符:+、-、!、~、++、--、true、false

l 可被重載的二元操作符:+、-、*、/、%、!、^(異或)、<、>、<<、>>、==、!=、<=、>=

l 不允許被重載的操作符:&&、||、=、?:、+=、-=、/=、%=、|=、^=、<<=、>>=,實際上其中一些“復式操作符”在二元操作符被重載后自動生成,而不能顯式定義

l 必須成對重載的操作符:(== ,!=)、(<,>)、(<=,>=)

l ++、--操作符重載時不能區分其為前置或后置的

2、 操作符重載與語言互操作性

編譯器會為重載的操作符生成一個特殊名稱的方法,如+(加)操作符生成op_Addition()方法,并為該方法的定義條目上加上specialname標記。當某種語言不能進行操作符重載時,可以直接定義具有該特殊名稱的方法,以在其他語言中調用;或直接調用具有該特殊名稱的方法以適應某種語言不能解析操作符的限制。如:vb中不能重載操作符,可顯式定義op_Addition()方法以在C#中調用;C#中定義的+操作符不能被VB識別,可顯式調用op_Addition()方法獲得同樣的功能。

四、 轉換操作符

轉換操作符的一些限制:

l 必須為public static

l 必須指定關鍵字implicit或explicit,原則為:從本類型轉換為其他類型使用implicit,將其他類型轉換為本類型用explicit,不能都使用implicit



五、 方法參數

1、 引用參數

l 缺省情況下為值傳遞

l 標志為out的參數,在調用方法前不必初始化,但返回之前必須賦值,沒有被初始化的參數是不能被使用

l 標志為ref的參數,在調用方法前必須初始化,否則觸發編譯錯誤

l 可以使用ref或out來進行方法的重載,但不能通過區分ref和out來重載方法

l 按引用方式傳遞的變量(實參)必須和方法聲明的參數(形參)類型完全相同,否則觸發編譯錯誤。

2、 可變數目參數

使用params關鍵字及對象數組的方式指定可變參數序列。一些限制:

l 只有方法的最后一個參數才能使用可變數目參數



六、 虛方法

1、 虛方法的調用機理

CLR使用以下兩個IL指令調用方法:

u call 根據類型(即引用的靜態類型、聲明類型)來調用一個方法

u callvirt 根據對象(即引用的動態類型、實際類型)來調用一個方法

對于虛方法使用call來調用的情況有:

l base.虛方法(),

l 密封類型引用虛方法,因為沒有必要檢驗密封類型的實際類型

l 值類型,避免被裝箱

使用callvirt調用非虛方法的情況:

l 應用變量為null時,使用callvirt才會拋出System.NullReferenceException異常,而call不會拋出

無論call或callvirt調用方法,均會有一個隱含的this指針作為方法的第一個參數,它指向正在操作的對象

2、 虛方法的版本控制:

用下面的例子說明:

using System;



class BaseClass

{

public void NonVirtualFunc()

{

Console.WriteLine("Non virtual func in base class");

}



public virtual void VirtualFunc()

{

Console.WriteLine("Virtual func in base class");

}

}



class DevicedClass : BaseClass

{

//若不使用new 關鍵字則編譯器會有warning:

//“DevicedClass.NonVirtualFunc()”上要求關鍵字

//new,因為它隱藏了繼承成員“BaseClass.NonVirtualFunc()”

public new void NonVirtualFunc()

{

Console.WriteLine("Non virtual func in deviced class");

}

//若不添加關鍵字override或new,則編譯器會有warning:

//“DevicedClass.VirtualFunc()”將隱藏繼承的成員“BaseClass.VirtualFunc()

//”。若要使當前成員重寫該實現,請添加關鍵字 override。否則,添加關鍵字

//new。

public override void VirtualFunc()

{

Console.WriteLine("Virtual func in deviced class");

}

}



class TestClass

{

public static void Main()

{

//派生類實例調用 非虛 及 虛函數

DevicedClass dc = new DevicedClass();

dc.NonVirtualFunc();

dc.VirtualFunc();



//基類實例調用 非虛 及 虛函數

BaseClass bc = new BaseClass();

bc.NonVirtualFunc();

bc.VirtualFunc();



//指向派生類實例的基類引用 調用 非虛 及 虛函數

BaseClass bc1 = dc;

bc1.NonVirtualFunc();

bc1.VirtualFunc();

}

}



/*

在虛函數上使用關鍵字override的運行結果:

Non virtual func in deviced class

Virtual func in deviced class

Non virtual func in base class

Virtual func in base class

Non virtual func in base class

Virtual func in deviced class

*/



/*

在虛函數上使用關鍵字new的運行結果

Non virtual func in deviced class

Virtual func in deviced class

Non virtual func in base class

Virtual func in base class

Non virtual func in base class

Virtual func in base class

*/

由上可見:new 和 override在派生類中協調版本的控制,在第七章中已經看到oeverride只能用于virtual方法,new則可用于非虛或虛方法,以實現隱藏基類中的同名方法。在虛函數上使用override,重寫了基類的方法,并無隱藏,這也就實現了多態。我們可設想這樣的結論:new使用call指令調用靜態類型的方法,而override使用callvirt指令調用動態類型的方法。

希望這個例子對您的理解

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 少妇黄色一级片| 欧美 日韩 国产 激情| 日韩av手机版| 久色视频在线播放| 中文字幕人妻熟女人妻洋洋| ijzzijzzij亚洲大全| 欧美午夜精品理论片| 三级av免费观看| 亚洲综合av在线播放| av五月天在线| 日韩欧美国产片| 欧美国产日韩另类| 中文字幕一区二区三区四区五区人 | 国产91在线亚洲| 日韩专区第三页| 日韩精品一区二区三区四| 国产资源第一页| 久久亚洲中文字幕无码| 2022亚洲天堂| 日本不卡一区二区在线观看| 手机免费av片| 超碰超碰超碰超碰超碰| 欧美视频在线观看网站| 国产主播在线看| 久久撸在线视频| www.色.com| 成人午夜免费在线| 欧美男女交配视频| 麻豆md0077饥渴少妇| 欧美日韩亚洲一| 玖玖爱视频在线| 国产一级大片免费看| 欧美国产日韩在线播放| 国产又爽又黄ai换脸| 国产九色porny| 污视频网站观看| 国产资源第一页| www黄色日本| 手机在线看福利| 亚洲成人动漫在线| www.欧美日本| 精品一二三四五区| 日本 片 成人 在线| 欧美视频免费看欧美视频| 992kp快乐看片永久免费网址| 北条麻妃亚洲一区| 日韩精品一区二区三区不卡| 丰满人妻一区二区三区53号| 欧美三级午夜理伦三级富婆| 一二三四视频社区在线| 天堂av2020| www.精品在线| 国产偷人视频免费| 日韩伦理在线免费观看| 在线视频日韩欧美| www亚洲成人| 国产精品视频分类| 女性女同性aⅴ免费观女性恋| 国产一区二区三区播放| 久久久九九九热| 色18美女社区| 日韩精品视频一二三| 九九九在线观看视频| 日本www高清视频| 97视频在线免费播放| 精品国产一二三四区| 男女啪啪免费视频网站| 日本阿v视频在线观看| 777久久精品一区二区三区无码 | www.偷拍.com| 欧美丝袜在线观看| 欧美一级xxxx| 操人视频免费看| 日本成人xxx| 超薄肉色丝袜足j调教99| 成人黄色片免费| 亚洲精品无码国产| 男人日女人视频网站| 国产黄色特级片| 手机在线看福利| 8x8x成人免费视频| 热久久最新地址| 免费av手机在线观看| 欧美xxxxx在线视频| 中文字幕第80页| 不用播放器的免费av| 国产激情片在线观看| 日韩欧美亚洲天堂| 亚洲天堂国产视频| 国产一级大片免费看| 欧美xxxxx在线视频| 91精品无人成人www| 蜜桃视频一区二区在线观看| 日本a视频在线观看| 91插插插插插插插插| 在线成人免费av| 精品一区二区中文字幕| 天天操天天干天天做| 很污的网站在线观看| 九色porny91| 国产在线视频在线| 日本人视频jizz页码69| 中文字幕在线中文| 欧美日韩在线成人| av在线免费观看国产| 日本在线一二三区| 日韩视频在线视频| 性生生活大片免费看视频| 欧美黑人经典片免费观看| www.日本一区| 日本在线视频www| 成人一级生活片| 欧美爱爱视频网站| 日本美女高潮视频| 精品欧美一区免费观看α√| 最近中文字幕免费mv| 亚洲精品高清无码视频| 国产极品在线视频| 日本一级黄视频| 奇米777在线| www.久久久久久久久久久| 国产xxxxx在线观看| 国产主播自拍av| 成人污网站在线观看| 日本特黄在线观看| 国产精欧美一区二区三区白种人| 黄色高清无遮挡| 久久成人免费观看| 久久久久久免费看| 欧美日韩福利在线| www.激情网| www插插插无码免费视频网站| 在线成人免费av| 亚洲国产欧美91| 国产日本欧美在线| 伊人再见免费在线观看高清版 | 7777在线视频| 手机在线免费毛片| 午夜激情影院在线观看| 亚洲热在线视频| 免费国产成人看片在线| 九九久久九九久久| 国产成人永久免费视频| 久久久久免费看黄a片app| 人妻夜夜添夜夜无码av| 久久综合色视频| 97在线免费公开视频| 日本www.色| www.com久久久| 91网站在线观看免费| 黄网站欧美内射| 欧美视频第三页| 手机看片福利日韩| 亚洲第一成肉网| 大西瓜av在线| 15—17女人毛片| 五月天六月丁香| 一区二区传媒有限公司| 黑人粗进入欧美aaaaa| 亚洲天堂一区二区在线观看| 日韩专区第三页| 男人的天堂日韩| 亚洲一区 在线播放| 人妻有码中文字幕| 一级黄色免费在线观看| 成人午夜免费在线| 日韩av片专区| 日本www在线播放| 日本网站在线看| 无码精品国产一区二区三区免费| 亚洲36d大奶网| 草b视频在线观看| 激情五月婷婷基地| 无码人妻精品一区二区三区在线 | 精品人妻大屁股白浆无码| 中文字幕在线观看第三页| 国产一二三四区在线观看| 国产一级特黄a大片免费| 久久久无码中文字幕久...| 久久久久久久久久久免费视频| 91免费视频黄| 亚洲欧洲日本精品| 乱妇乱女熟妇熟女网站| 潘金莲一级淫片aaaaa免费看| 一区二区成人网| 日韩久久一级片| 日本欧美黄色片| 成年人看的毛片| 992tv快乐视频| 欧美日韩久久婷婷| 亚洲精品在线视频播放| 亚洲一二三区av| 北条麻妃av高潮尖叫在线观看| 国产成人永久免费视频| 免费的一级黄色片| 懂色av粉嫩av蜜臀av| 蜜桃视频成人在线观看| www.久久av.com| 亚洲精品偷拍视频| 欧美在线一区视频|