2010-03-29 8 views
6

Was bedeutet ": Basis" in der folgenden Klasse (MyClass)? Bitte erläutern Sie das Konzept hinter der Konstruktordefinition für die Klasse MyClass.Was bedeutet ": base" in der Konstruktordefinition?

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; 
     } 
} 

Antwort

18

Die Basisklasse WorkerThread ruft. Wenn Sie eine MyClass erstellen, muss ein WorkerThread mit seinen beliebigen Konstruktoren erstellt werden.

Wenn Sie base(data) schreiben, weisen Sie das Programm an, einen WorkerThread-Konstruktor zu verwenden, der data als Parameter verwendet. Wenn Sie nicht dies tun, würde das Programm versuchen, einen Standardkonstruktor zu verwenden - einen, der ohne Parameter aufgerufen werden kann.

+6

Und das Basisklasse Konstruktor wird garantiert * vor ausgeführt werden * der aktuelle Konstruktor ausgeführt wurde. –

0

Es bedeutet, dass Sie die Datenparameter durch die Basisklasse an den Konstruktor an die MyClass-Konstruktor übergeben werden vorbei (WorkerThread) in Wirkung

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

Er ruft den Konstruktor der Klasse auf, von der er erbt, und stellt die entsprechenden Argumente bereit.

Art wie

new WorkerThread(data) 
-1

Ein seltener Fall fordern, wo VB klarer sein können ...

Public Class MyClass 
    Inherits WorkerThread 

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

End Class 
+0

Ich mag es nicht, dass VB es klarer als Sie macht, aber die Tatsache bleibt, dass dies ist. – StingyJack