Мне любопытно узнать, как правильно писать конструктор или, вернее, когда я пишу его так или иначе. Я также хотел бы знать, почему вы изменили имя поля в конструкторе, как я сделал в первом конструкторе с адресом поля. Спасибо за помощь.
Например, допустим, у вас есть класс «Отгрузка» с четырьмя полями: Строковый элемент, Двойная цена, Строковый адрес, Двойной вес.
class Shipment
{
private string item;
private double price;
private string address;
private double weight;
public Shipment(string item, double price, string addr, double weight)
{
this.item=item;
this.price=price;
address=addr;
this.weight=weight;
}
public Shipment()
{
item = "Football jersey";
price=35.99;
address = "8520 Washington Dr.Toledo, OH 43612"
weight=0.400;
}
}
Назовите свое поле знаком подчеркивания, например private string _item (что очень часто), и тогда вам не понадобится this или сокращение, например _item = item. мир спасен от еще одной надвигающейся программной катастрофы
Я бы предпочел использовать это ключевое слово для доступа к переменным-членам. Вы можете проверить его преимущества здесь - stackoverflow.com/questions/23250/…. Я согласен с @Sweeper, это личный стиль.
Это полностью зависит от личного выбора. Некоторые используют this.foo = foo;; некоторые люди предпочитают использовать префикс в таких полях, как _ с _foo = foo;. Некоторые люди предпочтут свойства без явных полей, такие как public string Foo {get;}, с Foo = foo;.





Я бы изменил определение конструктора по умолчанию следующим образом:
public Shipment : this ("Football jersey", 35.99, "8520 Washington Dr.Toledo, OH 43612", 0.400 )
{
}
Это повторно использует параметризованный конструктор и делает ваш код более лаконичным.
Остальная часть вашего кода в порядке. Использование this в конструкторе довольно стандартно и не позволяет вам придумывать другие имена для аргументов конструктора (например, addressParams).
Привет, спасибо за ответ, но, допустим, я создаю экземпляр нового экземпляра класса Shipment в моем основном методе Shipment newShip = new Shipment («Jersey», 50, «8520 Washington», 0,300); тогда и толку нет, правильно?
Затем он вызовет ваш параметризованный конструктор. И у вас есть оба варианта: либо передать параметры, либо, если вы хотите инициализировать его значениями по умолчанию, вообще не передавать никаких параметров.
Параметризованный - это тот, у которого нет фиксированных значений, я прав?
Да, этот конструктор: общедоступная поставка (строковый элемент, двойная цена, строковый адрес, двойной вес)
Я думаю, потому что печатать
this.address = address- это слишком много нажатий клавиш? Это во многом вопрос личного стиля.