Getters Setters Autoproperty问题

时间:2016-04-20 21:31:46

标签: c# c#-4.0

有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);

    }

和Engine的构造函数:

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

我用:

创建了一个对象
 Car car = new Car(x, y, z, a, b);

现在到了重点,最后:

我试图在我的主程序中访问car.CarEngine.FuelCount来获取值,但Visual甚至没有建议我使用CarEngine。我对整个autoproperty的东西都很陌生。 我做错了什么?

1 个答案:

答案 0 :(得分:5)

您声明的所有属性都没有modifier,因此默认情况下它们是private。这意味着它们只能在声明类中访问。

标记他们public将解决问题。

  

所有类型和类型成员都具有可访问级别,该级别控制是否可以从程序集或其他程序集中的其他代码使用它们。您可以使用以下访问修饰符在声明类型或成员时指定其可访问性:

     

public   类型或成员可以由同一程序集中的任何其他代码或引用它的另一个程序集访问。

     

private   只能通过相同类或结构中的代码访问类型或成员。

有关完整列表,请参阅Access Modifiers (C# Programming Guide)