2014-03-05 56 views
1

當我嘗試編譯下面的代碼我得到一個CS0052錯誤:C#錯誤CS0052,可訪問性不一致

struct mp3 
{ 
    public int ID, MBSize; 
    public string Make, Model, Price; 

    public mp3(int ID, int voorraad, int MBSize, string Make, string Model, string Price) 
    { 
     this.ID = ID; 
     this.MBSize = MBSize; 
     this.Make = Make; 
     this.Model = Model; 
     this.Price = Price; 
    } 
} 

public class Acess 
{ 
    static public List<mp3> mp3List = new List<mp3>(); 

    static public void laadMP3() 
    { 
     // ... 
    } 
} 

Error 1 Inconsistent accessibility: field type 'System.Collections.Generic.List' is less accessible than field 'SoundSharp___opdracht_3.Acess.mp3List'

+2

嘗試使用一致的方法來訪問修飾符,例如始終指定一個(private,protected,public,internal),並始終在該行的開頭指定它們。這將有助於調試將來的問題。 –

回答

6

我想的問題是,作爲public(你有一個公共struct mp3應聲明List<mp3>

+2

更具體地說,您不能擁有聚合一種較低可訪問性類型的公共字段(私有是默認值)。這給出了錯誤。 – BradleyDotNET

+0

@LordTakkera其實,類型不能是'private'。他們是「公共」或「內部」。但這是一個細節,你的觀點是正確的。 –

+0

@LordTakkera內部是沒有嵌套類型的默認值。 – Gusdor

1

struct S和class ES是internal默認(除非它們嵌套其他類型的內,在這種情況下,默認爲private),所以喲你不能用它作爲public屬性。使結構public,你應該罰款:

public struct MP3 
{ 

請注意,我還利用MP3遵循普遍接受的.NET casing standards