我只是想知道爲什麼我不能定義一個靜態類作爲保護,私人等?C#靜態類和範圍
protected static class Class1 {}
編譯器提供了以下錯誤消息:在命名空間中定義
元素不能被明確聲明爲private,protected或C#中受保護的內部
我只是想知道爲什麼我不能定義一個靜態類作爲保護,私人等?C#靜態類和範圍
protected static class Class1 {}
編譯器提供了以下錯誤消息:在命名空間中定義
元素不能被明確聲明爲private,protected或C#中受保護的內部
因爲在命名空間中擁有私有或受保護成員沒有意義。命名空間不是像類一樣的孤立的統一體,所以私有成員是有意義的。名稱空間不能被繼承,因此對受保護的成員沒有用處。
你可以有另一個類中的私有或proteted靜態類:
public class X {
private static class Y { }
protected static class Z { }
}
它們也可以是私有的。 – 2010-11-06 13:49:00
它們也可以是「private」或「protected」,如果不是直接在名稱空間(即嵌套類)中聲明的話。 – Oded 2010-11-06 13:49:36
@klausbskov:如果他們是嵌套類,他們可以。 – AnthonyWJones 2010-11-06 13:50:36
我只是援引C#規範相應條款:
頂級類型,這是沒有嵌套其他類型的 ,只能有內部的 或公共可訪問性。這些類型的默認 輔助功能是 內部
這不是特定於靜態類。它適用於在名稱空間中定義的所有元素。靜態類可以是私有的或保護的(除非它們是在名稱空間中定義的)。 – dtb 2010-11-06 13:50:07
@Oded不,我沒有添加它,它給出的錯誤 – 2010-11-06 13:56:27