-
Есть конструктор с параметрами, есть - без. Если вызван параметрический конструктор, но параметры переданы неверные, то хочется выполнить конструктор без параметров. Возможно ли и как? Или обойтись традиционным - отдельный метод, вызываемый из обоих конструкторов (в одном всегда, в другом - при плохих параметрах)?
-
public Form1(int i):this()
-
Поторопился - сорри. По контексту вопроса > Если вызван параметрический конструктор, но параметры переданы > неверные, то хочется выполнить конструктор без параметров. >
В моем примере сперва вызовется конструктор без параметров без проверок, а потом уже с параметрами. Ели вас это не устроит, то наверное лучше обойтись отдельным методом
-
>Если вызван параметрический конструктор, но параметры переданы неверные, то хочется выполнить конструктор без параметров.
Не знаю Вашей специфики, но принятая практика — кидать ArgumentException или его наследников в случае некорректных входных параметров.
-
> Если вызван параметрический конструктор, но параметры переданы > неверные, то хочется выполнить конструктор без параметров. > > Возможно ли и как?
Порядок вызова конструкторов (как наследуемых, так и переопределенных) строго регулируется компилятором, и возможности в рантайме менять порядок вызова - нет.
-
Можно еще при помощи статичного метода типа так:
class A
public A(...)
public static A Create(...)
}
-
А применять естественно так: A a = A.Create(...);
|