日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > C# >内容正文

C#

C#学习笔记3

發(fā)布時(shí)間:2023/12/20 C# 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#学习笔记3 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.雖然并不是必需的,但一般建議將每個(gè)類都放到它自己的文件中,用類名對(duì)文件進(jìn)行命名,這樣一來(lái),就可以更容易地尋找定義了一個(gè)特定類的代碼。

?

2.如果不為類成員添加訪問(wèn)修怖符,那么黠認(rèn)使用的是private,也就是說(shuō)成員默認(rèn)為私有成員。

?

3.不管為私有字段使用哪一種命名模式(_FirstName、_firstName、m_firstName(延續(xù)子C++的命名規(guī)范,m表示 member variable)、firstName),都要依據(jù)Pascal大小寫(xiě)規(guī)范來(lái)命名公共字段和屬性。因此,公共屬性應(yīng)該使用FirstName形式的名稱,類似地,假如沒(méi)有圍繞一個(gè)公共字段來(lái)創(chuàng)建封裝它的一個(gè)屬性,就應(yīng)該為該字段使用Pascal大小寫(xiě)規(guī)范。

?

4.在C#2.0的一個(gè)屬性的實(shí)現(xiàn)中,可以為get或者set部分指定訪問(wèn)修飾符(但不能為兩者同時(shí)指定訪問(wèn)修怖符),從而覆蓋為屬性聲明指定的訪問(wèn)修飾符。為get或set指定訪問(wèn)修飾符時(shí),注意這個(gè)訪問(wèn)修飾符的“限制性”必須比應(yīng)用于整個(gè)屬性的訪問(wèn)修飾符更“嚴(yán)格”,例如,將屬性聲明為較嚴(yán)格的 private,但將它的set聲明為較寬松的public,就會(huì)發(fā)生編譯錯(cuò)誤。

?

5.對(duì)象初始化器只是一項(xiàng)語(yǔ)法上的改進(jìn),最終生成 ClL 代碼和用單獨(dú)的語(yǔ)句對(duì)字段或?qū)傩赃M(jìn)行賦值無(wú)異,在c#語(yǔ)言中,成員初始化器的順序,決定了在 ClL 代碼的構(gòu)造器調(diào)用之后的語(yǔ)句中,對(duì)屬性和字段進(jìn)行賦值的順序。同理集合初始化器也會(huì)在IL中生成add()來(lái)添加元素。

?

6.終結(jié)器:C#提供了終結(jié)器 (finalizer) 構(gòu)造,與 C++的析構(gòu)器 (destructor ) 不同,終結(jié)器不是在對(duì)一個(gè)對(duì)象的所有引用都消失之后就馬上運(yùn)行,相反終結(jié)器是在一個(gè)對(duì)象最后一次活動(dòng)之后,并在程序終止之前執(zhí)行。具體地說(shuō)垃統(tǒng)回收器回在-次垃圾回收過(guò)程中識(shí)別出帶有終結(jié)器的對(duì)象,之后它并不是立即回收這些對(duì)象,而是將它們添加到一個(gè)終結(jié)隊(duì)列中,一個(gè)獨(dú)立的線程遍歷終結(jié)隊(duì)同中的每個(gè)對(duì)象,調(diào)用它們的終結(jié)器,鼎后把它們從隊(duì)列中刪除,使它們?cè)俅慰晒├厥掌魇褂谩?/span>

?

7.構(gòu)造器鏈:在同一個(gè)類中{針對(duì)同一個(gè)對(duì)象實(shí)倒),從一個(gè)構(gòu)造據(jù)中調(diào)用另一個(gè)構(gòu)造囂,C#采取的語(yǔ)法格式是在個(gè)冒號(hào)后面添如this關(guān)鍵字,再添加與披調(diào)用構(gòu)造器對(duì)應(yīng)的一個(gè)參數(shù)列表。以避免輸入重復(fù)的代碼,這稱為構(gòu)造器鏈(constructor chaining),它是用構(gòu)造器初始化器來(lái)實(shí)現(xiàn)的,構(gòu)造器初始化器會(huì)在執(zhí)行當(dāng)前構(gòu)造器的實(shí)現(xiàn)之前,判斷要調(diào)用另外哪一個(gè)構(gòu)造器。

?

8.匿名類型:它們是由編譯器動(dòng)態(tài)生成的數(shù)據(jù)類型,而不是通過(guò)顯式的類定義來(lái)聲明的。使用new{屬性=,屬性=,值}(如果所賦的值是一個(gè)屬性或字段,那么在沒(méi)有明確指定名稱的前提下,會(huì)黠認(rèn)使用字段或?qū)傩缘拿Q),編譯器遇到匿名類型的語(yǔ)法時(shí),就會(huì)自動(dòng)生成一個(gè)CIL類,該類具有與匿名類型聲明中的命名值和量據(jù)類型對(duì)應(yīng)的屬性,雖然C#沒(méi)有為這個(gè)自動(dòng)生成的類型提供一個(gè)名揮,但它仍然是靜態(tài)類型的。除非使用Lambda表達(dá)式和查詢表達(dá)式關(guān)聯(lián)來(lái)自不同類型的數(shù)據(jù),或者對(duì)數(shù)據(jù)進(jìn)行水平投射,否則一般情況下還是應(yīng)該盡量避免使用匿名類型。

?

9.靜態(tài)類的一個(gè)特證在于,C#編譯器會(huì)自動(dòng)在 CIL代碼中把它標(biāo)記為 abstract 和 sealed 這會(huì)將類指定為不可擴(kuò)展。

?

10.靜態(tài)構(gòu)造器:靜態(tài)構(gòu)造器用來(lái)對(duì)類(而不是類實(shí)例)進(jìn)行初始化,靜態(tài)構(gòu)造器不是顯式調(diào)用的,相反“運(yùn)行時(shí)”會(huì)在首次訪問(wèn)類時(shí)自動(dòng)調(diào)用靜態(tài)構(gòu)造器,所謂“首次訪問(wèn)類”可能是調(diào)用一個(gè)普通實(shí)例構(gòu)造器,也可能是由問(wèn)類的一個(gè)靜態(tài)方法或?qū)傩?#xff0c;我們使用靜態(tài)構(gòu)造器將類中的靜態(tài)數(shù)據(jù)初始化成一個(gè)特定的值,尤其是在無(wú)法通過(guò)在聲明時(shí)的一次簡(jiǎn)單的賦值來(lái)獲得初始化值的時(shí)候。假如一個(gè)靜態(tài)字段的賦值,既在靜態(tài)構(gòu)造器中進(jìn)行,又在聲明時(shí)進(jìn)行,那么當(dāng)初始化結(jié)束的時(shí)候,最終獲得的是什么值呢?

  答案是靜態(tài)初始化的賦值優(yōu)先于聲明字段時(shí)的賦值,因?yàn)樵贑#編譯器生成的IL碼時(shí),靜態(tài)聲明時(shí)的賦值移動(dòng)到了靜態(tài)構(gòu)造器的第一句。同理實(shí)例字段的情況也是一樣的。

?

11.常量const:常量字段自動(dòng)成為靜態(tài)字段,因?yàn)椴恍枰獮槊總€(gè)對(duì)象實(shí)例都生成一個(gè)新的字段實(shí)例,但是假如將一個(gè)常量字段顯式地聲明為 static,會(huì)造成一個(gè)編譯錯(cuò)誤。

?

12.嵌套類:在某個(gè)類對(duì)外部沒(méi)有使用、或特別意義,只對(duì)當(dāng)前的類有意義,可以聲明為嵌套類,嵌套類可是用private修飾。嵌套類中的this成員指的是嵌套類的一個(gè)實(shí)例,而不是包容類,嵌套類要想訪問(wèn)包容類的實(shí)例,一個(gè)辦法是顯示傳遞包容類的實(shí)例,比如通過(guò)一個(gè)構(gòu)造器或這方法參數(shù)。嵌套類的另一個(gè)有趣的特點(diǎn)是它能夠訪問(wèn)包容類的任何成員,其中包括私有成員。但反之則不然,包容類不可能訪問(wèn)嵌套類的私有成員。要警惕public嵌套類,它們意味著不良的編碼風(fēng)格。

?

13.部分類與部分方法:部分類(partial calss)主要用于代碼生產(chǎn)工具進(jìn)行固定格式代碼生成,部分類的聲明可以把多個(gè)部分類放在多個(gè)文件中(必須在同一個(gè)程序集中),編譯器會(huì)自動(dòng)合并。

  C#3.0新增了部分方法(partial methods)特性,部分方法只能存在于部分類中,且無(wú)返回值,和部分類相似,其主要是為代碼的生成提供方便。部分方法允許聲明一個(gè)方法而不需要一個(gè)實(shí)現(xiàn),然而如果包含了可選的實(shí)現(xiàn),這個(gè)實(shí)現(xiàn)就可以放到某個(gè)姊妹部分類定義中。因?yàn)樵谏傻牟糠诸惔a中,生成工具不能提供具體方法實(shí)現(xiàn)邏輯,若以部分方法的形式提供一個(gè)鉤子(占位),具體實(shí)現(xiàn)可由開(kāi)發(fā)者實(shí)現(xiàn),若部分方法沒(méi)有在另一個(gè)部分類中實(shí)現(xiàn),IL中不會(huì)出現(xiàn)部分方法的任何蹤跡。如在Person類中展示了部分方法與部分類的細(xì)節(jié)。

//Person.Designer.cs文件 public partial class Person {#regionpartial void OnLastNameChanging(string value);partial void OnFirstNameChanging(string value);#endregionpublic Guid Id { get; set; }private string _LastName;public string LastName{get { return _LastName; }set{if (_LastName != value){OnLastNameChanging(value);_LastName = value;}}}private string _FirstName;public string FirstName{get { return _FirstName; }set{if (_FirstName != value){OnFirstNameChanging(value);_FirstName = value;}}} } //Person cs文件 public partial class Person {partial void OnLastNameChanging(string value){if (string.IsNullOrWhiteSpace(value)){throw new ArgumentException("LastName");}}partial void OnFirstNameChanging(string value){if (string.IsNullOrWhiteSpace(value)){throw new ArgumentException("FirstName");}} }

?

-------------------------以上內(nèi)容根據(jù)《C#本質(zhì)論 第三版》進(jìn)行整理

轉(zhuǎn)載于:https://www.cnblogs.com/zwt-blog/p/6297084.html

總結(jié)

以上是生活随笔為你收集整理的C#学习笔记3的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。