Правильный синтаксис выглядит следующим образом:
public MyClass()
{
// do stuff here
}
public MyClass(int num) : this()
{
// do other stuff here
}
Обратите внимание на this()
на втором конструкторе. Это вызывает конструктор в том же классе без параметров.
Вы также мог бы это наоборот:
public MyClass() : this(someReasonableDefaultValueForNum)
{
}
public MyClass(int num)
{
// do all stuff here
}
Там есть только одна «функция» вы можете использовать вместо this
на этом месте, которое base
:
public MyClass(int num) : base(someParameterOnTheBaseClassConstructor)
{
}
Этих полезно, если вы не хотите вызывать конструктор без параметров по умолчанию в базовом классе, но один из конструкторов, который принимает параметры.
Может ли другая функции быть заменена на 'это()' в этом контексте? – CJ7
@ CJ7 Это не функция. Это специальная конструкция синтаксиса. Допустимы только 'this (..)' и 'base (..)'. См. [Использование конструкторов] (http://msdn.microsoft.com/en-us/library/ms173115%28v=vs.110%29.aspx). –