privado new herencia constructors c# constructor constructor-chaining

new - polymorphism constructor c#



¿Qué significa este colón(:)? (7)

Antes de que this palabra clave sea dos puntos. ¿Alguien puede explicar qué significa el colon en este contexto? No creo que esto sea inhertance.

Gracias

using System; namespace LinkedListLibrary { class ListNode { private object data; private ListNode next; public ListNode(object dataValue) : this(dataValue, null) { } public ListNode(object dataValue, ListNode nextNode) { data = dataValue; next = nextNode; } public ListNode Next { get { return next; } set { next = value; } } public object Data { get { return data; } } } }


(Junto con la palabra clave this ) le está dando instrucciones al constructor para que llame a otro constructor dentro del mismo tipo antes de que él mismo lo ejecute.

Por lo tanto:

public ListNode(object dataValue) : this(dataValue, null) { }

efectivamente se convierte en:

public ListNode(object dataValue) { data = dataValue; next = null; }

Tenga en cuenta que puede usar base lugar de this para indicar al constructor que llame a un constructor en la clase base.


Argumentos de la cadena del constructor También hay ": base ()" para encadenar una llamada a un constructor en el tipo base.


El código indica al otro constructor que ejecute con los argumentos proporcionados antes de que se ejecute el cuerpo del constructor actual.


Es un encadenamiento de constructor así que el constructor con el siguiente : this llamada encadena al ctor que coincide con la firma.

Entonces en esta instancia

public ListNode(object dataValue)

esta llamando

public ListNode(object dataValue, ListNode nextNode)

con null como el segundo parámetro a través de : this(dataValue, null)

también vale la pena señalar que el ctor llamado a través del colon se ejecuta antes del ctor que se llamó para inicializar el objeto.


Llama al otro constructor ListNode. Puede hacer algo similar con la palabra clave base para llamar a un constructor de una clase de la que deriva.


No, eso le permite ejecutar la sobrecarga del constructor existente (la que tiene dos parámetros), antes de ejecutar el cuerpo del nuevo constructor.

Esa es la forma más simple de reutilizar el código de constructor en múltiples sobrecargas de constructor.


Significa que antes de ejecutar el cuerpo, ejecuta el constructor con los parámetros object y ListNode.