亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

閱讀《LEARNING HARD C#學習筆記》知識點總結與摘要三

2019-11-17 02:26:27
字體:
來源:轉載
供稿:網友

閱讀《LEARNING HARD C#學習筆記》知識點總結與摘要三

最近工作較忙,手上有幾個項目等著我獨立開發設計,所以平時工作日的時候沒有太多時間,下班累了就不想動,也就周末有點時間,今天我花了一個下午的時間來繼續總結與整理書中要點,在整理的過程中,發現了書中的一些不足,我在以下的博文中都有說明,大家如果有這本書的可以對照著知識點及書本相結合的方式來看,沒有這本本書的也可以對照著我整理的知識要點進行實際編碼測試與學習,希望能對大家有所幫助,如果覺得可以的話,還請推薦哦,謝謝!

閱讀《LEARNING HARD C#學習筆記》知識點總結與摘要系列文章從這篇博文開始,涉及的知識點的會越來越深入,希望大家能受益,若發現有不足之處,還請指出,謝謝!

首先補充之前的一個知識點:

委托只能定義在命名空間、類中,而不能定義在方法中(即:不能局部定義),這個在書中沒有說明,我是在寫代碼的時候認識到的,也請大家測試一下,看能否找出根本原因。

經我測試,發現不只委托類型,所有的自定義類型均不能在方法體中定義,均報錯,關于這個問題的思考與分析詳見我的博文:

C#簡單問題,不簡單的原理:不能局部定義自定義類型(不含匿名類型)

十三.泛型可變性

協變:指泛型類型參數可以從一個派生類隱式地轉換為基類,用out關鍵字標識類型參數,以標明其支持協變性。(即:可將子類型的類型參數泛型對象賦值給父類型的類型參數泛型對象),如:

List<object> objectList=new List<object>();

List<string> stringList=new List<string>();

objectList.AddRange(stringList);

逆變:指泛型類型參數可以從一個基類隱式的轉換為派生類,用in關鍵字標識類型參數,以標明其支持逆變性。(即:可將父類型的類型參數泛型對象賦值給子類型的類型參數泛型對象)。

逆變與協變剛好相反,可以理解協變是泛型類型參數的子類替換為父類的過程,逆變是泛型類型參數的父類替換子類的過程。

注意:

  1. 只有接口和委托才支持協變與逆變
  2. 協變與逆變只支持引用類型,因為可變性存在引用轉換,而值類型不具備
  3. 必需顯式的用in或out 關鍵字來標識類型參數,否則默認是不支持的
  4. 委托的可變性不要在多播委托中使用

十四.可空類型

  1. Nullable<值類型>,值類型? 均表示為可空類型,即允許為null值的值類型。
  2. 空合并操作符:雙問號(即:??),作用是若可空類型(這里的可空類型指的是可以為空的類型,包含引用類型)的值不為Null則返回其值否則返回指定的值,如:

Int? nullInt=null; nullInt= nullInt??0; nullInt的最終值是0;

  1. 可空類型若值為NULL,將其轉換為引用類型時,不會發生裝箱操作,因為引用類型本身就支持NULL值,而非NULL值則會發生裝箱操作。若將已裝箱的可空類型轉換為可空類型時,會發生拆箱操作,若值為NULL則拆箱后的可空類型值也為NULL;
  2. 使用可空類型的GetType方法,返回的是實際的值類型,若使用typeof方法,則返回的是可空類型;若可空類型的實際值為NULL,則調用上述兩種方法均會報錯。

十五.匿名方法

  1. 匿名方法的定義與普通方法定義基本相同,但匿名方法無方法名稱、返回類型,使用delegate關鍵字來定義方法,且在定義的同時必須將匿名方法賦值給相應的委托類型(即使用匿名方法來實例化委托),然后使用委托來執行,定義語法如下:

委托類型 anonymousMethod=delegate(形參列表)

{

//方法主體

};

  1. 匿名方法的生命周期與引用該匿名方法的委托對象生命周期相同;
  2. 被匿名方法引用的外部變量與匿名方法的生命周期相同;

十六.迭代器

1.foreach循環原理是,通過訪問迭代器(IEumerator),然后不斷的獲取下一個對象(MoveNext、Current),直到找不到下一個對象為止才停止循環。一個對象若需使用foreach循環,則該對象的類型必須實現IEumerable或IEumerable<T>接口,同時必須實現GetEnumerator方法來返回迭代器。

2. 實現GetEnumerator方法可能通過yield return 關鍵字來動態生成迭代器(迭代器的生成由編譯器來完成)

十七.C#3.0新特性

類的屬性簡化定義(自動實現屬性):訪問修飾符類型 屬性名{get;set;},無需聲明私有變量來存放屬性的值,編譯器在編譯的時候會自動生成。

隱式類型:采用var關鍵字來取代定義變量的類型(類似javascript的var),變量的實際類型等于其值的類型,因為隱式類型需要依據變量的值來得出其真實類型,所以定義隱式類型的變量同時必須進行變量初始化,未初始化的或其初始化的值無法直接獲得實際類型的(比如:NULL)將會報錯。

注意隱式類型(var)僅能聲明在局部變量中,不能聲明為類的成員類型(字段、屬性、方法)以及方法的形參類型

隱式數組:實例化數組時無需指定數組的類型及個數,直接賦值數組各成員(利用的是集合初始化器),但需注意數組成員的類型必須統一,否則無法獲得真實類型,也就不滿足隱式類型的定義要求,會報錯的。定義語法如下:

Var intArray=new[]{1,2,3,4,5,6,7,8,9,10};

對象初始化器:在通過new調用類型的構造函數的同時(任意一個可實例的公共構造函數,未限定為無參的構造函數),直接賦值各類型的成員,定義語法如下:

類型 變量名=new 類型(參數){ 屬性=值,… …};

例子:Person p=new Person(){Name=”zuowenjun”,Age=29}; Person p=new Person(“zuowenjun”){ Age=29,Sex=”男”};

集合初始化器:在通過new調用類型的構造函數的同時(任意一個可實例的公共構造函數,未限定為無參的構造函數),直接賦值各類型的成員,但需要注意的是必需實現Add方法,編譯器是通過自動調用Add方法來實現集合的添加的。

定義語法如下:

類型 變量名=new 類型(參數){成員對象,… …};

例子:

List< Person> personList=new List< Person>(){new Person{Name=“張三”,Age=10}, new Person{Name=“李四”,Age=20}};

String[] strs=new[]{“a”,”b”,”c”,”d”};

Dictionary<int, string> dic = new Dictionary<int, string>(4) { { 1, "a" }, { 2, "b" }, { 3, "c" }, { 4, "d" } };

匿名類型:即無需定義類型,通過隱式類型和對象初始化器兩種特性來實例化一個未知類型的對象,定義語法如下:

Var 變量名=new{屬性名=值};

注意:匿名類型的訪問范圍默認為Internal且不可更改,只能進行屬性成員賦值,不能定義除屬性外的其它成員(事件,索引器等),且屬性成員不能添加訪問修飾符默認為公共,屬性的類型就是其值的實際類型,屬性值的類型不限。

例子:

Func<string,string> sayFunc=delegate(string yourname){return yourname + ",您好。很高興認識你!";};

var Person = new { Name = "zuowenjun", Age = 29, Sex = "男", WebSite = "www.zuowenjun.cn", Say = sayFunc};

Console.WriteLine(Person.Say("博客園"));

輸出:博客園,,您好。很高興認識你!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲第一天堂无码专区| 欧美专区国产专区| 亚洲精品久久久久| 亚洲男人第一av网站| 精品国产区一区二区三区在线观看| 亚洲精品国偷自产在线99热| 日韩一区二区三区在线播放| 久久久日本电影| 亚洲男人的天堂网站| 国产精品久久久久久av福利| 亚洲精品国产综合久久| 日韩视频免费在线观看| 亚洲男人天堂2024| 精品二区三区线观看| 欧美成人小视频| 欧美日本国产在线| 国产97在线亚洲| 日韩欧美中文免费| 国产日产欧美a一级在线| 精品国产依人香蕉在线精品| 国产午夜精品视频免费不卡69堂| 爽爽爽爽爽爽爽成人免费观看| 欧美老少配视频| 国产精品福利在线观看| 91亚洲精品视频| 国产一区二区三区视频在线观看| 亚洲日本aⅴ片在线观看香蕉| 美女黄色丝袜一区| 欧美综合一区第一页| 日韩欧美中文在线| 欧美一级大胆视频| 色av中文字幕一区| 日韩一区二区三区国产| 国产成人高清激情视频在线观看| 国产成人在线亚洲欧美| 午夜免费在线观看精品视频| 欧美午夜视频一区二区| 日韩成人在线视频观看| 97国产一区二区精品久久呦| 性金发美女69hd大尺寸| 97国产一区二区精品久久呦| 日本亚洲欧美三级| 亚洲国产欧美一区二区三区久久| 日韩高清免费在线| 欧美限制级电影在线观看| 亚洲性生活视频| 91精品国产99| 精品久久香蕉国产线看观看gif| 国产91在线播放九色快色| 5566成人精品视频免费| 亚洲第一国产精品| 亚洲国产精品网站| 日韩成人中文字幕| 成人免费网站在线看| 亚洲激情视频在线观看| 国产精品美女免费| 亚洲综合一区二区不卡| 国内精品免费午夜毛片| 欧美大成色www永久网站婷| 在线日韩av观看| 国产区亚洲区欧美区| 成人精品在线视频| 亚洲国产精品国自产拍av秋霞| 成人高清视频观看www| 国产精品久久久久久一区二区| 日本精品视频在线| 日韩精品欧美国产精品忘忧草| 欧美成人一区在线| 在线播放国产精品| 亚洲伊人第一页| 亚洲一区二区中文| 亚洲网址你懂得| 国产在线观看一区二区三区| 国产成人avxxxxx在线看| 北条麻妃一区二区三区中文字幕| 国内精品免费午夜毛片| 68精品国产免费久久久久久婷婷| 亚洲精品456在线播放狼人| 成人97在线观看视频| 国产精品白丝jk喷水视频一区| 91在线网站视频| 日韩美女中文字幕| 91免费精品视频| 狠狠色狠狠色综合日日五| 九九热r在线视频精品| 欧美猛交ⅹxxx乱大交视频| 久久久精品一区二区| 成人羞羞国产免费| 久久久久久久久久久91| 国产精品视频xxxx| 久久久久亚洲精品| 日韩在线视频播放| 伦伦影院午夜日韩欧美限制| 91久久在线视频| 美女扒开尿口让男人操亚洲视频网站| 色综合天天狠天天透天天伊人| 毛片精品免费在线观看| 国产高清视频一区三区| 亚洲www在线| 亚洲精品电影网在线观看| 国产日本欧美一区| 日韩一区二区av| 538国产精品一区二区在线| 成人网址在线观看| 国产亚洲精品91在线| 中文字幕亚洲字幕| 日韩国产中文字幕| 欧美激情欧美激情| 亚洲在线免费看| 精品magnet| 久久免费精品视频| 欧美精品在线免费观看| 国语自产精品视频在免费| 亚洲天堂久久av| 精品视频在线播放色网色视频| 久久久久久com| 日韩美女视频中文字幕| 欧美日韩在线免费观看| 国产精品旅馆在线| 欧美日韩精品国产| 成人免费网站在线观看| 欧美激情视频在线免费观看 欧美视频免费一| 国产日韩在线亚洲字幕中文| 日本最新高清不卡中文字幕| 国产aaa精品| 性欧美亚洲xxxx乳在线观看| 亚洲欧洲在线看| 亚洲天堂视频在线观看| 国产精品久久久久久久久久久不卡| 国外视频精品毛片| 成人激情电影一区二区| 精品国产依人香蕉在线精品| 久久久久久久国产精品| 亚洲第一精品福利| 欧美亚洲午夜视频在线观看| 日韩精品在线观| 亚洲缚视频在线观看| 亚洲最新av网址| 亚洲韩国欧洲国产日产av| 久久成人精品电影| 国产一区二区三区久久精品| 欧美日本啪啪无遮挡网站| 亚洲人午夜精品| 蜜臀久久99精品久久久久久宅男| 国产婷婷97碰碰久久人人蜜臀| 精品国产一区二区三区久久久狼| 国产精品偷伦视频免费观看国产| 亚洲欧洲自拍偷拍| 中文字幕亚洲情99在线| 日韩欧美在线看| 色悠久久久久综合先锋影音下载| 都市激情亚洲色图| 亚洲欧美色婷婷| 欧美交受高潮1| 国产精品av网站| 91黑丝在线观看| 久久久久久久久电影| 欧美激情精品久久久久久大尺度| 久久久国产一区二区三区| 成人国产精品久久久久久亚洲| 日韩av一区在线| 日本成熟性欧美| 久久精品视频在线| 亚洲美女激情视频|