Что означает «: base» в определении конструктора? - PullRequest
7 голосов
/ 29 марта 2010

Что означает ": base " в конструкторе следующего класса (MyClass)? Пожалуйста, объясните концепцию определения конструктора, приведенную ниже для класса MyClass.

public class MyClass: WorkerThread
{
        public MyClass(object data): base(data) 
        { 
           // some code       

        }
}

public abstract class WorkerThread
{

        private object ThreadData;
        private Thread thisThread;

        public WorkerThread(object data)
        {
            this.ThreadData = data;
        }

        public WorkerThread()
        {
            ThreadData = null;
        }
}

Ответы [ 4 ]

19 голосов
/ 29 марта 2010

Базовый класс - WorkerThread. Когда вы создаете MyClass, необходимо создать WorkerThread , используя любой из его конструкторов.

При написании base(data) вы указываете программе использовать один конструктор WorkerThread, который принимает data в качестве параметра. Если вы не сделали это, программа попытается использовать конструктор по умолчанию, который можно вызывать без параметров.

2 голосов
/ 29 марта 2010

Он вызывает конструктор класса, от которого он наследуется, и предоставляет соответствующие аргументы.

Вроде как звонить

new WorkerThread(data)
0 голосов
/ 29 марта 2010

Редкий случай, когда VB может быть яснее ...

Public Class MyClass
  Inherits WorkerThread

  Public Sub New(data)
    MyBase.New(data)
  End Sub

End Class
0 голосов
/ 29 марта 2010

Это означает, что вы передаете параметр данных, переданный конструктору MyClass, в конструктор базового класса (WorkerThread), вызывая

public WorkerThread(object data)
{
    this.ThreadData = data;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...