程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C# 2.0:使用匿名方法、迭代程序和局部類來創建優雅的代碼(14)

C# 2.0:使用匿名方法、迭代程序和局部類來創建優雅的代碼(14)

編輯:關於C語言

屬性和索引可見性

C# 2.0 允許為屬性或索引器的 get 和 set 訪問器指定不同的可見性。例如,在通常情況下,可能想將 get 訪問器公開 為 public,而把 set 訪問器公開為 protected。為此,可以為 set 關鍵字添加 protected 可見性限定符。類似地,可以將索引器的 set 方法定義為 protected (請參見圖 12)。

當使用屬性可見性時有幾項規定。首先,應用在 set 或 get 上的可見性限定詞只能是此屬性本身可見性的嚴格子集。換句話說,如果 此屬性是 public,那麼您就可以指定 internal、protected、protected internal、private。如果此屬性可見性是 protected,就不能將 get 或 set 公 開為 public。此外,只能分別為 get 或 set 指定可見性,而不能同時為它們指 定可見性。

Figure 12Public Get and Protected Set

public class MyClass
{
  public string this [int index]
  {
   get
   {
     return m_Names[index];
   }
   protected set
   {
     m_Names[index] = value;
   }
  }
  string[] m_Names;
  //Rest of the class
}

圖 12

靜態類

有些類只有靜態方法或靜態成員(靜態類),這是非常常見 的。在這種情況下,實例化這些類的對象沒有意義。例如,Monitor 類或類工廠 (例如 .Net 框架 1.1 中的 Activator 類)都是靜態類。在 C# 1.1 中,如果 想要阻止開發人員實例化類的對象,您可以只提供一個私有的默認構造函數。如 果沒有任何公共的構造函數,就不可以實例化類的對象:

public class MyClassFactory
{
  private MyClassFactory()
  {}
  static public object CreateObject()
  {...}
}

然而,因為 C# 編譯器仍然允許您添加實例成員(盡管可能從來都不 使用它們),所以是否在類中只定義靜態成員完全由您決定。C# 2.0 通過允許將 類限定為 static 來支持靜態類:

public static class MyClassFactory
{
  static public T CreateObject<T>()
  {...}
}

C# 2.0 編譯器不允許您將一個非靜態成員添 加到一個靜態類中,也不允許您創建此靜態類的實例,就好像它是一個抽象類一 樣。此外,您不能從一個靜態類派生子類。這就如同編譯器在靜態類定義中加入 了 abstract 和 sealed 一樣。注意,可以定義靜態類而不能定義靜態結構,並 且可以添加靜態構造函數。

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