顯示具有 DotNetFramework-CSharp 標籤的文章。 顯示所有文章
顯示具有 DotNetFramework-CSharp 標籤的文章。 顯示所有文章

2012年6月15日 星期五

使用 foreach 存取集合類別

若要使用 foreach 陳述式逐一查看集合,則集合必須符合下列需求︰

  • 它必須是介面、類別或結構。
  • 它必須包括可傳回型別的公用 GetEnumerator 方法。
  • 傳回型別包含名為 Current 的公用屬性和名為 MoveNext 的公用方法。

2012年5月10日 星期四

傳遞參數

使用 ref 和 out 傳遞參數

ref vs out

refout 這二個關鍵字都是用來宣告使用傳址 (By Reference) 方式傳遞參數。使用上也都必須明確使用 ref 或 out 關鍵字。

二者之間最主要的差異在於:

  • 使用 ref 修飾詞的參數,其參數傳送前必須要有值。
  • 使用 out 修飾詞的參數,其參數回傳前必須要有值。

2012年3月23日 星期五

is 和 as

由於物件都是多型的,因此可以使用某個基底類別 (Base Class) 型別的變數來存放衍生型別 (Derived Type)。
若要存取衍生型別的方法,您必須將值轉型回衍生型別。
不過,在這種情況下嘗試進行簡單轉型卻會有擲回 InvalidCastException 的風險。
這就是 C# 提供 is 和 as 運算子的原因。
您可以使用這兩個運算子測試轉型能否成功,而不會擲回例外狀況 (Exception)。

as 運算子通常比較有效率,因為如果轉型能夠成功,它實際會傳回轉型值。
is 運算子卻只會傳回布林值,因此它可以用在只是要確定物件的型別而不必實際轉型的情況。