2016-04-20 58 views
-1

存在自動屬性問題。下面是從我的類片段:Getters Setters Autoproperty問題

class Car 
{ 
    string brand; 
    string model; 
    Engine CarEngine {get; set;} 

現在該類引擎:

class Engine 
{ 
    double FuelCap { get; } 
    double fuelCapDefault = 50; 
    double FuelCount { get; set;} 
    double engineCap; 

我創建了構造一個對象:

public Car(string brand, string model, double engineCap, double FuelCount, double FuelCap) 
    { 
     this.brand = brand; 
     this.model = model; 
     this.CarEngine = new Engine(engineCap, FuelCount, FuelCap); 

    } 

和發動機的構造:

public Engine(double engineCap, double FuelCount, double FuelCap) 
    { 
     this.engineCap = engineCap; 
     this.FuelCount = FuelCount; 
     this.FuelCap = FuelCap; 
    } 

我有crea泰德與對象:

Car car = new Car(x, y, z, a, b); 

我們的主要觀點,最後:

我試圖訪問car.CarEngine.FuelCount我在主程序中獲得的價值,但視覺甚至不建議我CarEngine。我是新來的整個autoproperty的東西。 我做錯了什麼?

+5

你忘了做'CarEngine'公開。 「'公共引擎CarEngine {get; set;}'」,與'FuelCount'相同 –

+0

@ScottChamberlain我使用getters/setters的整個目的不是爲了公開它:( – user3653415

+0

Getters和setter默認使用父範圍,如果你想要一個公共的getter和一個私人的setter,那麼''public Engine CarEngine {get; private set;}' –

回答

5

您聲明的所有屬性都沒有任何modifier,所以默認情況下它們是private。這意味着它們只能在聲明類中訪問。

標記他們public將解決問題。

所有類型和類型成員的可訪問性水平,其控制是否可以從其他代碼在彙編或其他組件一起使用。您可以使用下面的訪問修飾符來指定一個類型或成員的可訪問性,當你把它聲明:

public 的類型或成員可以通過在同一組件中的任何其他代碼或引用它的另一個組件進行訪問。

private 類型或成員只能由同一類或結構中的代碼訪問。

有關完整列表,請參閱Access Modifiers (C# Programming Guide)