В C#, каков лучший/принятый способ сделать конструктора, объединяющего в цепочку?

Имейте Вас попробованный: git rebase -i master?

8
задан Stécy 22 September 2009 в 17:55
поделиться

7 ответов

В вашем примере я бы пошел первым путем. Второй вариант на самом деле не устраняет дублирование кода, которого вы, по-видимому, пытаетесь избежать, поскольку вам все равно нужно явно указать _param . Пустой вызов this () во втором подходе совершенно бесплатный.

13
ответ дан 5 December 2019 в 07:12
поделиться

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

4
ответ дан 5 December 2019 в 07:12
поделиться

Цепочка из pramater less to pramater,

поэтому вызов из конструкторов параметров арендодателя со значениями по умолчанию к большему количеству параметров

public MyClass()
{
    MyClass(default value here);
}

public Myclass(value)
{
    _value = value;
}
3
ответ дан 5 December 2019 в 07:12
поделиться

Я бы подумал, что всегда лучше использовать цепочку от меньшего к большему, т.е. зачем назначать пустую строку, а не заданную строку в конструкторе, когда имеет смысл передать значение по умолчанию (строка. Пусто) параметризованному конструктору.

1
ответ дан 5 December 2019 в 07:12
поделиться

Я тоже предпочитаю первый. Так же, как в сложном производном классе, наследующем от простого базового класса, вы хотите, чтобы «сложный» конструктор основывался на функциональности «базового».

1
ответ дан 5 December 2019 в 07:12
поделиться

Второй пример в вашем случае действительно не имеет смысла, поскольку вы дублируете назначение члена класса (если вы используете конструктор MyClass (параметр строки) ).

Второй подход более полезен, если связанные конструкторы «добавляют функциональность».

Пример:

public MyClass ()
{
    _param0 = string.Empty;
}

public MyClass (string param1) : this ()
{
    _param1 = param1;
}

public MyClass (string param1, string param2) : this (param1)
{
    _param2 = param2;
}

В вашем конкретном случае первый пример, очевидно, намного более уместен, поскольку у вас есть только одно назначение одному и тому же члену.

1
ответ дан 5 December 2019 в 07:12
поделиться

Если вы сформулировали здесь свою цель как «обеспечение значения по умолчанию, когда значение не указано», тогда вам следует явно использовать первый подход.

Общее правило будет таким: цепочка из наименьшего -специфический конструктор в наиболее точный.

0
ответ дан 5 December 2019 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: