Нужна помощь по перегрузке Construct в C # - PullRequest
0 голосов
/ 03 декабря 2018

Я новичок в c # и пытаюсь перегрузить yourCar в класс Car, где он будет создан, а затем снова отображен в главном.Проблема, с которой у меня возникают проблемы, заключается в том, что я перегружаю ее, потому что значения по умолчанию остаются неизменными, а не новая цена в сочетании с цветом по умолчанию.

// Creates a Car class
// You can construct a Car using a price and color
// or just a price, in which case a Car is black
// or no parameters, in which case a Car is $10,000 and black
using static System.Console;
class DebugNine3
{
   static void Main()
   {
      Car myCar = new Car(32000, "red");
      Car yourCar = new Car(14000);
      Car theirCar = new Car();
      WriteLine("My {0} car cost {1}", myCar.Color,
         myCar.Price.ToString("c2"));
      WriteLine("Your {0} car cost {1}",
         yourCar.Color, yourCar.Price.ToString("c2"));
      WriteLine("Their {0} car cost {1}",
         theirCar.Color, theirCar.Price.ToString("c2"));
  }
}

class Car
{
  // private string color;
  // private int price;
  // 
  public string color;
  public int price;

   //DEfault no values entered
   public Car() : this(10000, "black")
   {

   //One value entered
   public Car(int price) : this()
   {
   }

   //both values entered
   public Car(int price, string color)
   {

       Price = price;
       Color = color;
   }

   //what it does with the values passed to it 
   public string Color
   {
      get
      {
         return color;
      }
      set
      {
         color = value;
      }
   }

   public int Price
   {
      get
      {
         return price;
      }
      set
      {
         price = value;
      }
   }
}

Я получаю следующие результаты: Моя красная машинастоит $ 32 000,00 Ваша черная машина стоит $ 10 000,00 Их черная машина стоит $ 10 000

1 Ответ

0 голосов
/ 03 декабря 2018

Вы ничего не настраиваете.Ваш конструктор public Car(int price) ничего не делает с ценой, вместо этого сделайте следующее:

public Car(int price) : this()
{
    this.Price = price;
}

Таким образом, конструктор по умолчанию сработает (и установит цену и цвет по умолчанию), затем вы установите правильный новый.

Редактировать Кроме того, лучший способ установить параметры по умолчанию - использовать сами параметры, а не вызывать их со значениями по умолчанию.Смотрите пример:

class Test {
  public int A {get; set;} = 5;
  public string B {get; set;} = "test";

  public Test() {
  }

  public Test(int a) {
    this.A = a;
  }

  public Test(int a, string b) {
    this.A = a;
    this.B = b;
  }
}
...