Можно ли вызвать перегруженный конструктор из другого конструктора того же класса в С#?
Можно ли вызвать перегруженный конструктор из другого конструктора того же класса в С#?
Ответ 1
Нет. Вы не можете этого сделать, единственное место, которое вы можете вызвать конструктор из другого конструктора в С#, сразу после ":" после конструктора. например
class foo
{
    public foo(){}
    public foo(string s ) { }
    public foo (string s1, string s2) : this(s1) {....}
}
Ответ 2
Если вы имеете в виду, если вы можете сделать ctor chaining в С#, то да. Вопрос уже задан.
Однако, как видно из комментариев, кажется, что вы действительно собираетесь задавать
"Можно ли вызвать перегруженный конструктор из  внутри другого конструктора с предварительной/последующей обработкой?" 
Хотя С# не имеет синтаксиса для этого, вы можете сделать это с помощью общей функции инициализации (например, вы бы сделали на С++, который не поддерживает цепочку ctor)
class A
{
  //ctor chaining
  public A():this(0)
  {  Console.WriteLine("default ctor"); }
  public A(int i)
  {  Init(i); }
  // what you want
  public A(string s)
  {  
    Console.WriteLine("string ctor overload" );
     Console.WriteLine("pre-processing" );
     Init(Int32.Parse(s));
     Console.WriteLine("post-processing" );
  }
   private void Init(int i)
   {
     Console.WriteLine("int ctor {0}", i);
   }
}
Ответ 3
EDIT: Согласно комментариям к исходному сообщению, это вопрос С#.
Короткий ответ: да, используя ключевое слово this.
Длинный ответ: да, используя ключевое слово this, и вот пример.
class MyClass
{
   private object someData;
   public MyClass(object data)
   {
      this.someData = data;
   }
   public MyClass() : this(new object())
   {
      // Calls the previous constructor with a new object, 
      // setting someData to that object
   }
}
Ответ 4
В С# невозможно вызвать другой конструктор из тела метода. Вы можете вызвать базовый конструктор следующим образом: foo (args): base(), как указано самим. Вы также можете вызвать другой конструктор в том же классе: foo (args): this().
Если вы хотите что-то сделать перед вызовом базового конструктора, кажется, что построение базы - это класс, зависящий от некоторых внешних вещей. Если это так, вы должны использовать аргументы базового конструктора, а не задавать свойства базового класса или что-то вроде этого
