2013-02-11 49 views
2

類定義了這些類:使訪問修飾符一個所有成員

class Data 
{ 
    internal string f_source; 
    internal string f_output; 
    internal string password; 
} 

正如你看到的,我定義它的每個成員訪問修飾符,明確。

是否存在某種方式來一次爲類中的所有成員定義默認訪問修飾符?

也許,有一些屬性,使這種夢想成真......不知道......

我已經試過類聲明之前使用訪問修飾符:

internal class Data 
{ 
    string f_source; 
    string f_output; 
    string password; 
} 

但是,沒有成功!

是否有任何建議:「如何解決這樣的問題?」

+3

我沒有看到一個問題,非常適合這裏。這是C#而不是C++,在C#中,您將訪問修飾符寫在每個成員,方法,屬性和構造函數的前面。它使得它更清晰imho。有時當我切換到C++時,我希望我可以在那裏使用它,但是再一次,那就是C++而不是C#。 (我知道我可以'public:int getValue()');) – dowhilefor 2013-02-11 12:13:40

+1

@默認'internal'的默認值不正確。它默認爲合法的最受限訪問修飾符。這是'內部'直接在名字空間的類,但'私人'的任何成員 – 2013-02-11 12:17:18

+0

@RuneFS啊。我讀得很快..我刪除了我的評論。 – Default 2013-02-11 12:21:27

回答

3

按照設計,您要求的內容在C#中是不可能的。

C#的規範指定了哪個訪問修飾符在沒有給定的情況下使用。默認值是合法的訪問限制最嚴格的訪問修飾符。這是直接在命名空間中的類型(即不是嵌套類型)是內部的,而任何成員都是私有的,除非另有說明。

這是,我敢肯定,這是一個部分基於C++中訪問修改器的工作經驗的設計決策。一系列的錯誤可能來自於文件的特定部分,聲明爲private,public等等。必須聲明它(或者知道如果沒有指定它是儘可能受限制的),這會更加富有表現力。保持限制爲默認以保持儘可能多的內部(*)的實施細則,只露出你真正需要公開

(*),而不是修改

3

你的第二個定義類型使得你的類只能在那個類的同一個程序集中可訪問。沒有辦法讓所有的成員都成爲所有成員的內部成員。

赤這樣的:msdn internal defination&example

祝您好運!