Por el bien de este ejemplo, supongamos que estamos haciendo un juego tonto de Clue ™. Tenemos una clase para cada habitación de la mansión y subclases para el sospechoso y el arma en cada habitación. Algo así como:Un constructor para una clase y sus clases anidadas
class Room
{
public string Name;
public int Width;
public int Height;
// and so on...
public class Suspect
{
public string Name;
public bool isPurple;
}
public class Weapon
{
public string Name;
public bool IsMetal;
}
}
Antes de añadir las clases sospechoso y Arma, el constructor habitación parecía algo así como:
public Room(string Name, int Width, int Height)
{
this.Name = Name;
this.Width = Width;
this.Height = Height;
}
la inicialización de una habitación que solía ser tan simple como: Room[i] = new Room("Conservatory", 7, 3);
- pero después de las clases anidadas eran introducido, ¿su inicialización puede manejarse a través de un constructor compartido con la clase principal? Algo como:
Room[i] = new Room("Library", 8, 5, "Professor Plum", true, "Candlestick", true);
No puedo encontrar ningún ejemplo de una configuración similar. ¿Cómo puedo lograr esto?
¿Está buscando algo como esto ParentClass.ChildClass childClass = new ParentClass.ChildClass(); – HatSoft
Una clase anidada no tiene una relación particular con su clase principal. Excepto que puedes declararlo privado y así esconderlo por completo. Y que puede acceder a miembros privados de la clase externa. Eso es todo, no hay ningún escenario en el que un "constructor compartido" tenga sentido. Tampoco tiene sentido hacer que la clase de personaje sea un detalle de implementación privada de una habitación. –
No encuentra ningún ejemplo porque ninguno podría escribir un ejemplo para eso, ¿cómo puede el compilador saber que "Profesor Plum" se debe usar como valor para la propiedad Suspect.Name? (Supongo que esta es tu intención) – Steve