1. 程式人生 > >十、C#入門基礎10(密封類和密封方法,異常)

十、C#入門基礎10(密封類和密封方法,異常)

一、密封類

密封類可以用來限制擴充套件性,如果密封了某個類,則其他類不能從 該類繼承。
如果密封了某個成員,則派生類不能重寫該成員的實現。
預設情況下,不應該密封類和成員。
密封可以防止對庫的型別和成員進行自定義。
C#中使用密封類時,如果類滿足以下條件,則應將其密封:
1.靜態類。
2.類包含帶有安全敏感資訊的繼承的受保護成員。
3.類繼承多個虛成員,並且密封每個成員的開發和測試開銷明顯大於密封整個類。
4.類是一個要求使用反射進行快速搜尋的屬性。密封屬性可提高反射在檢查屬性時的效能。

密封類需要使用sealed關鍵字,語法如下:
訪問修飾符 sealed class 類名:基類或介面
{
//繼承非必須要寫
//類成員
}

密封類特性:
1.密封類不能作為基類被繼承,但它可以繼承別的類或者實現介面。
2.在密封類中不能宣告受保護成員或虛成員,因為受保護成員只能從派生類進行訪問,而虛成員只能在派生類中重寫。
3.由於密封類的不可繼承性,因此密封類不能宣告為抽象的,即 sealed修飾符不能與abstact修飾符同時使用。

二、密封方法

密封方法只能用於對基類的虛方法(virtual)進行實現,並提供具體 的實現。
所以,宣告密封方法時,sealed修飾符總是和override修飾符同時 使用。

密封方法語法如下:
public sealed override 方法名()
{
//方法體
}

三、異常

異常是在程式執行期間出現的問題。
C# 中的異常是對程式執行時出現的特殊情況的一種響應。
異常提供了一種把程式控制權從某個部分轉移到另一個部分的方式。
C# 異常處理時建立在四個關鍵詞之上的:try、catch、finally 和 throw。

try:一個 try 塊標識了一個將被啟用的特定的異常的程式碼塊。後跟一個或多個 catch 塊。
catch:程式通過異常處理程式捕獲異常。catch 關鍵字表示異常的捕獲。
finally:finally 塊用於執行給定的語句,不管異常是否被丟擲都會執行。
throw:當問題出現時,程式丟擲一個異常。使用 throw 關鍵字來完成。

1.try…catch:
try
{
//執行程式碼
}
catch (Exception ex)
{
//捕獲異常
}

2.try…catch(多):
try
{
//執行程式碼
}
catch (….Exception ex)
{
//捕獲異常
}
catch (Exception ex)
{
//捕獲異常
}

3.try…catch…finally
try
{
//執行程式碼
}
catch (Exception ex)
{
//捕獲異常
}
finally
{
//執行程式碼
}

4.自定義異常
//可寫在catch 也可作為單獨程式碼進行編寫
throw (new Exception(“報錯啦”));
這裡寫圖片描述