Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Getters Setters自动属性问题_C#_C# 4.0 - Fatal编程技术网

C# Getters Setters自动属性问题

C# Getters Setters自动属性问题,c#,c#-4.0,C#,C# 4.0,自动属性有问题。下面是我课堂上的一个片段: class Car { string brand; string model; Engine CarEngine {get; set;} 现在,类引擎: class Engine { double FuelCap { get; } double fuelCapDefault = 50; double FuelCount { get; set;} double engineCap; 我使用构造

自动属性有问题。下面是我课堂上的一个片段:

 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;
    }
我创建了一个对象,其中包含:

 Car car = new Car(x, y, z, a, b);
现在谈谈要点,最后:

我正在尝试访问主程序中的car.CarEngine.FuelCount以获取值,但Visual甚至没有建议我使用CarEngine。我对所有的自动财产都不熟悉。
我做错了什么?

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

将它们标记为公共将解决问题

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

公开的 该类型或成员可由同一程序集或引用它的另一程序集中的任何其他代码访问

私人的 类型或成员只能由同一类或结构中的代码访问


有关完整列表,请参见

您忘记将CarEngine公开。公共引擎CarEngine{get;set;},与FuelCount@ScottChamberlain我使用getter/setter的全部目的并不是将其公开:如果您希望公共getter和私有setter执行公共引擎CarEngine{get;private set;},那么getter和setter默认使用父范围@user3653415-重点是不公开-那么你不了解属性。自动属性后面的自动变量不是公共的,但属性必须是公共的,否则它在代码中没有任何用途。如果你想从车外进入物业,物业必须是私人以外的东西。