Можно ли вызвать перегруженный конструктор того же класса В C#?
Я знаю, что могу сделать это с помощью ': this ()', но если я сделаю это, перегруженный конструктор будет исключен первым, и мне нужно, чтобы он был выполнен после конструктора, который его вызовет . . . . Сложно объяснить позвольте мне поставить некоторый код:
Class foo{
public foo(){
Console.WriteLine("A");
}
public foo(string x) : this(){
Console.WriteLine(x);
}
}
///....
Class main{
public static void main( string [] args ){
foo f = new foo("the letter is: ");
}
}
В этом примере программа покажет
A
the letter is:
Но чего я хочу, так это
the letter is:
A
Есть ли "элегантный способ" сделать это? Я бы предпочел не извлекать действия конструктора в separated метод и вызвать их оттуда.
2 ответа:
Да, вы можете сделать это довольно легко (к сожалению):
class foo { public foo( ) { Console.WriteLine( "A" ); } public foo( string x ) { Console.WriteLine( x ); var c = this.GetType( ).GetConstructor( new Type[ ] { } ); c.Invoke( new object[ ] { } ); } } class Program { static void Main( string[ ] args ) { new foo( "the letter is: " ); } }