@Porohkun

Как передать управление в другой конструктор?

Вот есть у меня скажем класс:
public class test
{
   int _IntValue;
   string _StringValue;

   public test(int i)
   {
       _IntValue=i;
   }

   public test(int i, string s)
   {
       //тут надо бы выполнить код из первого конструктора
       _StringValue = s + _IntValue;
   }
}

Как мне сделать так, чтобы при вызывании второго конструктора сначала выполнялся код из первого, а только потом из второго (ну или наоборот, не суть)

Интересует вариант без реализации через наследование или через выделение кода первого конструктора в отдельную процедуру.

Спасибо.
  • Вопрос задан
  • 2814 просмотров
Решения вопроса 2
impwx
@impwx
Разработчик

public test(int i, string s) : this(i)
{
    _StringValue = s + _IntValue;
}

Ответ написан
@Porohkun Автор вопроса

Догадался сам. Работает аналогично передаче управления конструктору родителя, только вместо base - this.


    public class test
    {
        int _IntValue;
        string _StringValue;

        public test(int i)
        {
            _IntValue = i;
        }

        public test(int i, string s):this(i)
        {
            _StringValue = s + _IntValue;
        }
    }

Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@KotAA

public class test
{
   int _IntValue;
   string _StringValue;

   public test(int i)
   {
       _IntValue=i;
   }

   public test(int i, string s)
   {
       //тут надо бы выполнить код из первого конструктора
       this.test(i);

       _StringValue = s + _IntValue;
   }
}

Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы