Se llama al primer constructor de la clase base seguido del constructor de la clase derivada. El resultado es 2. Debería indicar explícitamente la accesibilidad de esa variable de clase. ¿Está protegido, privado o público?
veo la ha cambiado a pública ahora, por lo que habrá 2.
Este enlace le ayudará a entender más constructores, cómo se utilizan, cuando se les llama, y el orden de llamada al constructor cuando se utiliza herencia:
http://www.yoda.arachsys.com/csharp/constructors.html
también es posible que desee probar en realidad este usted mismo, usted aprenderá más por la práctica de la escritura de código y luego simplemente leerlo.
Intenta declarar Bar y dar salida a su valor. Utilice 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 impresión simple daría el resultado que está buscando. Aquí está la salida:
alt text 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;}.
Mala práctica para que las variables miembro se hagan públicas. Es posible que desee recoger un buen libro sobre los objetos iniciales de C#. – JonH
Duplicado de http://stackoverflow.com/questions/1882692/c-constructor-execution-order, con una excelente respuesta aceptada y comentarios que vinculan las entradas del blog de Eric Lippert nada menos. –