Я работаю над изучением C # и столкнулся с проблемой с примером из моей книги.
Я не могу понять, почему он устанавливает для моих объектов «Выход» соответствующие локации, но для моего RoomWithDoor.Exits значение «ноль».
public Form1()
{
InitializeComponent();
CreateObjects();
MoveToANewLocation(livingRoom);
}
public void CreateObjects()
{
livingRoom = new RoomWithDoor("living room", "an antique carpet", "an oak door with a brass knob");
livingRoom.Exits = new Locations[] { diningRoom, kitchen };
livingRoom.DoorLocation = frontYard;
diningRoom = new Room("dining room", "crystal chandelier");
diningRoom.Exits = new Locations[] { livingRoom, kitchen };
abstract class Locations
{
public Locations(string name)
{
this.name = name;
}
public Locations[] Exits;
private string name;
public string Name { get { return name; } }
class Room : Locations
{
public Room(string name, string decoration)
: base(name)
{
this.decoration = decoration;
}
class RoomWithDoor : Room, IHasExteriorDoor
{
public RoomWithDoor(string name, string decoration, string doorDescription)
: base(name, decoration)
{
this.doorDescription = doorDescription;
}
Итак, это работает
private void MoveToANewLocation(Locations newLocation)
{
currentLocation = newLocation;
currentLocationExit = currentLocation.Exits[0];
MessageBox.Show(diningRoom.Name);
но эта доза не
MessageBox.Show(livingRoom.Exits[0].Name);