2010-11-06 113 views
0

我只是想知道爲什麼我不能定義一個靜態類作爲保護,私人等?C#靜態類和範圍

protected static class Class1 {} 

編譯器提供了以下錯誤消息:在命名空間中定義

元素不能被明確聲明爲private,protected或C#中受保護的內部

+0

這不是特定於靜態類。它適用於在名稱空間中定義的所有元素。靜態類可以是私有的或保護的(除非它們是在名稱空間中定義的)。 – dtb 2010-11-06 13:50:07

+0

@Oded不,我沒有添加它,它給出的錯誤 – 2010-11-06 13:56:27

回答

1

因爲在命名空間中擁有私有或受保護成員沒有意義。命名空間不是像類一樣的孤立的統一體,所以私有成員是有意義的。名稱空間不能被繼承,因此對受保護的成員沒有用處。

你可以有另一個類中的私有或proteted靜態類:

public class X { 

    private static class Y { } 

    protected static class Z { } 

} 
1

非嵌套類可以是publicinternal而不是protectedprotected是成員訪問修飾符,不適用於在名稱空間級別定義的類型。

+0

它們也可以是私有的。 – 2010-11-06 13:49:00

+1

它們也可以是「private」或「protected」,如果不是直接在名稱空間(即嵌套類)中聲明的話。 – Oded 2010-11-06 13:49:36

+0

@klausbskov:如果他們是嵌套類,他們可以。 – AnthonyWJones 2010-11-06 13:50:36

0

我只是援引C#規範相應條款:

頂級類型,這是沒有嵌套其他類型的 ,只能有內部的 或公共可訪問性。這些類型的默認 輔助功能是 內部