Установка значений полей в конструкторе

Мне любопытно узнать, как правильно писать конструктор или, вернее, когда я пишу его так или иначе. Я также хотел бы знать, почему вы изменили имя поля в конструкторе, как я сделал в первом конструкторе с адресом поля. Спасибо за помощь.

Например, допустим, у вас есть класс «Отгрузка» с четырьмя полями: Строковый элемент, Двойная цена, Строковый адрес, Двойной вес.

 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;
  }

 }

Я думаю, потому что печатать this.address = address - это слишком много нажатий клавиш? Это во многом вопрос личного стиля.

Sweeper 07.06.2018 12:17

Назовите свое поле знаком подчеркивания, например private string _item (что очень часто), и тогда вам не понадобится this или сокращение, например _item = item. мир спасен от еще одной надвигающейся программной катастрофы

TheGeneral 07.06.2018 12:18

Я бы предпочел использовать это ключевое слово для доступа к переменным-членам. Вы можете проверить его преимущества здесь - stackoverflow.com/questions/23250/…. Я согласен с @Sweeper, это личный стиль.

user1672994 07.06.2018 12:21

Это полностью зависит от личного выбора. Некоторые используют this.foo = foo;; некоторые люди предпочитают использовать префикс в таких полях, как _ с _foo = foo;. Некоторые люди предпочтут свойства без явных полей, такие как public string Foo {get;}, с Foo = foo;.

Marc Gravell 07.06.2018 12:42
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я бы изменил определение конструктора по умолчанию следующим образом:

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); тогда и толку нет, правильно?

Simon 07.06.2018 13:32

Затем он вызовет ваш параметризованный конструктор. И у вас есть оба варианта: либо передать параметры, либо, если вы хотите инициализировать его значениями по умолчанию, вообще не передавать никаких параметров.

WaughWaugh 07.06.2018 13:34

Параметризованный - это тот, у которого нет фиксированных значений, я прав?

Simon 07.06.2018 13:37

Да, этот конструктор: общедоступная поставка (строковый элемент, двойная цена, строковый адрес, двойной вес)

WaughWaugh 07.06.2018 13:41

Другие вопросы по теме