sharp method inside example crear c# constructor base

method - Orden del constructor C#base()



constructor c sharp example (6)

El constuctor base se llama primero, y usted tendría un valor de 2 para abc

Posible duplicado:
Orden de ejecución del constructor C #

class Foo { public int abc; Foo() { abc = 3; } } class Bar : Foo { Bar() : base() { abc = 2; } }

En el ejemplo anterior, cuando se crea un objeto de Bar, ¿cuál será el valor de BarObject.abc? ¿Se llama primero al constructor base o se ejecuta Bar (), / then / the base () constructor?


El primer constructor de la clase base es llamado seguido por el constructor de la clase derivada. El resultado es 2. Debería indicar explícitamente el acceso a esa variable de clase. ¿Es protegido, privado o público?

Veo que lo cambiaste a público ahora, entonces será 2.

Este enlace lo ayudará a comprender mejor los constructores, cómo se usan, cuándo se llaman y el orden de llamada al constructor cuando usa la herencia:

http://www.yoda.arachsys.com/csharp/constructors.html

También es posible que desee probarlo usted mismo, aprenderá más practicando y escribiendo código y luego solo leyéndolo.

Intenta declarar Bar y da salida a su valor. Usa algunas propiedades:

class Foo { public int abc; public Foo() { abc = 3; } public int ABC { get { return abc; } set { abc = value; } } } class Bar : Foo { public Bar() : base() { abc = 2; } } class Program { static void Main(string[] args) { Bar b = new Bar(); Console.WriteLine(b.ABC); Console.ReadLine(); } }

Una simple impresión arrojaría el resultado que está buscando. Aquí está el resultado:

texto alternativo http://img141.imageshack.us/img141/9238/rrrrr.jpg

No te encanta mi namespace :-). Por cierto, también podría usar propiedades automáticas para que la propiedad sea simplemente pública int ABC {get; set;}.


La variable abc se configurará como 3 y luego se cambiará a 2 (el constructor base se llama primero).


Será 2. Los constructores se ejecutan en orden desde la clase base hasta la última clase heredada.

Tenga en cuenta que los inicializadores (variables estáticas y de instancia) se ejecutan en la dirección opuesta.

La secuencia completa está aquí: http://www.csharp411.com/c-object-initialization/


Suponiendo que haces abc protegido para que este compila, será 2; sin embargo, base () se llama primero.

Para cosas como esta, escriba una aplicación de prueba simple y configure algunos puntos de interrupción para encontrar la respuesta.


Primero se llamará al constructor base, pero este código no se compila . Los campos privados no son accesibles desde subclases. Por lo menos, un campo debe estar protegido para ser utilizado en una subclase.

Pero incluso sabiendo esto, el comportamiento que estás intentando es confuso porque es sorprendente. El solo hecho de que haya tenido que preguntar a qué orden van las cosas implica que se arruinará cuando se olvide el pedido.