程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#學習筆記2

C#學習筆記2

編輯:C#入門知識

C#學習筆記2。本站提示廣大學習愛好者:(C#學習筆記2)文章只能為提供參考,不一定能成為您想要的結果。以下是C#學習筆記2正文


1.命名空間聲明:命名空間是一種特殊的分類機制,它將與一個特定功用有關的一切類型都分組到一同。普通將外層命名空間指定為公司名,向內順次是產品名,最後是功用區域,比方Microsoft.Win32.Networking。命名空間中中可以包括句點,這樣使得命名空間“顯得”層次清楚,但是,這只對加強可讀性有利,由於編譯器以為一切命名空間都在同一個級刷上,

例如 System.Collections.Generics 似乎被包括在 System.Collections 命名空間外部,但是關於編譯器來說.它們是兩個完生抽立的,完全不同的命名空間。

 

2.using導入的區別:在文件的頂部放置 using 指令和在命名空間聲明的外部的頂部放置 using 指令的區別在於,後者的 using 指令只在你聲明的那個命名空間內無效,假設在 Awl.Mlchaelis.EssentialCSharp 命名空間的內部又聲明了一個新的命名空間,新的命名空間不會遭到 using.System指令的影響。不過,很少會這樣寫代碼,尤其是依據商定,每個文件只應該有一個類型聲明。

 

3.using的別名:應用 using 指令為命名空間或類型取一一般名,別名(alias)是在 using 指令所在的那個范圍內可以運用的一個替代稱號。之所以要運用別名,兩個最罕見的緣由是:消弭同名的兩個類型的歧義和縮寫一個長稱號。

 

4.順序入口辦法:Main()辦法支持int前往值,而不是僅僅支持vold前往. 退回值關於Main()聲明來說是可選的. 但是,假設運用了它. 順序就可以將一個形態碼前往給調用者(調用者可以是一個腳本,也可以是一個批處置文件)。依據商定,一個非零的前往值代表一個錯誤。雖然一切命令行參數都可以經過一個字符串數組傳遞給Main(),但我們有時分能夠需求從一個不同於Main()的辦法中訪問那些參數,在這種狀況下,可以運用 System.Environment.GetCommandLineArgs()辦法,該辦法采取和Main(string[] args)將參數傳遞給Main()一樣的方式來前往命令行參數。

 

5.C#4.0新增:

(1)可選參數:可選參數一定放在一切必需的參數(無默許值的參數)前面。另外,默許值必需是一個常量,或許說必需是編譯時能確定的一個值,這-點極大限制了“可選參數”的使用。

如:DirectoryCountLines(string directory,string extension="*.cs")

(2)命名參數:應用命名參盤,調用者可顯式指定參數名.並為該參數賦一個值,而不是像以前那樣只能根據參數順序來決議哪個值賦給哪個參數,

如:DisplayGreeting(firstName:"Lucy",lastName:"Jack");

public void DisplayGreeting(string firstName,string middleName=default(string),string lastName=default(string))

{

  ....省略

}

假如一個方站有少量的參數,而且其中許多都是可選的(訪問Microsoft COM庫時,這是很罕見的-種狀況),那麼命名參數語法一定能帶來不少便當。但要留意的是,這個便當的代價是犧牲辦法接口的靈敏性,過來{至多就 C#來說),參數名可以自在更改,不會形成調用代碼無法編譯的狀況. 但在添加了命名參數後,參數名就成為辦法接口的一局部,更改稱號會招致運用命名參數的代碼無法編譯。

 

6.假設辦法重載、可選參數和命名參數這幾種技術一同運用,我們難以一眼看出最終調用的究竟是哪個辦法,只要在一切參數(可選參數除外)都恰恰有一個對應的實參(不論是依據稱號還是地位),而且該實參具有兼容類型的狀況下,才說一個調用適用於(兼容於)一個辦法。雖然這限制了可調用的辦法數量,但還缺乏以獨一性地標識辦法,為了進一步區分辦法,編譯器只運用調用者顯式標識的參數,疏忽調用者沒有指定的一切可選參數。所以,假設由於一個辦法有一個可選參數,形成兩個辦法都適用,編譯器最終選擇的將是無可選參數的辦法。

編譯器從一系列“適用”的辦法中選擇最終調用的辦法時,根據的是哪個辦法最詳細,只能有一個辦法完全婚配調用者傳遞的參數,所以,該辦法總是具有最高優先級。

如:調用者傳遞的是一個 int,那麼承受 double 的辦法將優先於承受 object 的辦法,這是由於 double 比 object 更詳細,假如有多個適用的辦法,但無法從中挑選出最具獨一性的,編譯器就會報錯,指明調用存在歧義。在寫理序時,最好是運用顯式轉型,方便他人了解你想調用哪個目的辦法。

 

7.try-catch-finally的運用:catch由詳細到普通,假設在捕獲Exception 的catch 塊之後添加了一個詳細的 catch 塊,編譯器就會報告一條正告音訊,指出詳細的catch塊永遠都不會執行。沒有指定數據類型的 catch 塊稱為泛化catch塊(generic catch block),它等價於獲取 object數據類型的catch塊。

例如 catch(object exception){ . . . ),由於一切類最終都是從 object派生 , 所以沒無數據類型的 catch 塊必組呈現在最後。泛化的 catch 塊很少運用,由於沒有方法捕獲有關異常的任何信息。防止運用異常處置來處置意料之中的狀況,開發者該當盡量防止為意料之中的狀況或許正常的控制流引發異常,異常是專門為了跟蹤例外的、事前沒有意料到的、而且能夠形成嚴重結果的狀況而設計的,為意料之中的狀況運用異常,會形成你的代碼難以閱讀、了解和維護。

C#在拋出異常時會發生些許功能損失,相較干大少數操作都是納秒級的速度,它能夠形成毫秒級的延遲,人們往常留意不到這個延遲,除非異常沒有失掉處置。

 

8.catch塊中運用throw:可以在一個catch塊中重新引發異常(如在catch(ArgumentNullException ex)的完成中,可以包括對throw ex的調用),然後像這樣重新引發異常,會將棧追蹤重置為重新引發的地位,而不是重用原始引發地位。在一個catch塊的外部,假設你重新引發一個不同的異常,那麼不只會重置引發點,還會隱藏原始異常,為了保存原始異常,需求設置新異常的InnerException屬性(該屬性通常可以經過結構器來賦值)。

 

9.自定義異常:自定義異常獨一的硬性要求就是它必需從System.Exception或許其某個子類派生,除此之外,在運用自定義異常的時分,還應遵照以下最佳理論。

(1)一切異常都應該運用“Exception”後綴,彰顯其用處。

(2)通常,一切異常都應該包括以下3個結構器:無參數結構器、獲取一個string參數的結構器、以及同時獲取一個字符串和一個外部異常作為參數的結構器。

(3)防止運用深的承繼層次構造(普通應該小於5級)。

 

10.從NET Framework 4 開端,枚舉類型也添加了一個TryParse辦法。

 

-------------------------------------------以上內容依據《C#實質論 第三版》停止整理

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved