首页 > 解决方案 > 访问构造函数值

问题描述

我正在尝试访问我的代码中的值。我有两个课程,carex 和引擎。

引擎类具有以下代码:

public class Engine
{
    public string Size;
    public int HorsePower;
    public float FuelConsumtionRate;
    
    public Engine()
    {
    }
    
    public Engine(string cylinder, int hp, float fuelRate)
    {
        Size = cylinder;
        Console.WriteLine($"Engine type: {cylinder}");
        HorsePower = hp;
        Console.WriteLine($"Horse power: {hp} hp");
        FuelConsumtionRate = fuelRate;
        Console.WriteLine($"Fuel consumption: {fuelRate} l/h");
    }
}

carex 类具有以下代码:

public class CarEx
{
    string Manfacturer;
    string RegistrationNr;
    float Fuel;
    float Speed;
    bool IsRunning;
    
    public CarEx(string manuf, float fuel, string regNr)
    {
        Manfacturer = manuf;
        this.Fuel = fuel;
        RegistrationNr = regNr;
        Console.WriteLine("_____________________________________________________");
        Console.WriteLine($"Manufacturer; {manuf}, Fuel amount: {fuel}l, License: {regNr}");
        Console.WriteLine("______________________________________________________");
    }
    
    public void ChooseEngineType()
    {
        Engine v4 = new Engine("v4", 200, 0.7f);        
    }

    public void FillFuel(float amount)
    {
        Fuel += amount;
        /*            
        Fuel -= 0.7f;
        */
    }
        
    public static void RunCar()
    {
        CarEx car1 = new CarEx("Saab", 10, "1234DD");
        car1.CallCustomer();
        Console.WriteLine($"Maker: {car1.Manfacturer}");
        Console.WriteLine($"Registration nr: {car1.RegistrationNr}");
    }
}

我想替换硬编码的油耗率

燃料 -= 0.7f;

我用引擎构造函数中设置的值将其注释掉,因此不再对其进行硬编码。

我错过了什么?

标签: c#

解决方案


您的ChooseEngineType方法创建了一个Engine对象,但它存储在一个局部变量中,该变量在方法结束后立即停止存在。

将该变量更改Engine engine级别的字段或属性,然后您可以在所有方法中使用engine其属性。engine.FuelConsumtionRate

(PS,该属性的正确拼写是FuelConsumptionRate


推荐阅读