2010-03-29 13 views
6

¿Cuál es el significado de ": base" en el costructor de la siguiente clase (MyClass)? Por favor explique el concepto detrás de la definición del constructor que se proporciona a continuación para la clase MyClass.¿Cuál es el significado de ": base" en la definición del constructor?

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

Respuesta

18

La clase base es WorkerThread. Cuando crea un MyClass, debe crearse un WorkerThread , utilizando cualquiera de sus constructores.

Al escribir base(data) está indicando al programa que use un constructor WorkerThread que toma data como parámetro. Si no lo hizo, el programa trataría de usar un constructor predeterminado, uno al que se pueda llamar sin parámetros.

+6

Y ese constructor clase base está garantizada para ser ejecutado antes de * * el constructor actual se ejecuta. –

0

significa que está pasando el parámetro de datos transferida al constructor MyClass a través de al constructor de la clase base (WorkerThread) en efecto llamando

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

Llama al constructor de la clase de la que hereda y proporciona los argumentos correspondientes.

Algo así como llamar

new WorkerThread(data) 
-1

Un raro caso de VB puede ser más claro ...

Public Class MyClass 
    Inherits WorkerThread 

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

End Class 
+0

No me gusta que VB lo haga más claro que tú, pero el hecho es que sí lo es. – StingyJack

Cuestiones relacionadas