私はC#の学習に取り組んでいます。私は私の本の例で問題に遭遇しました。 私はなぜそれが私の部屋のオブジェクトを設定するのかわかりません適切なLoactionsを終了するが、私のRoomWithDoor.Exitsをnullにします。だから、C#の継承が正しく動作していないようです
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);
'C#の継承が正しく機能していないようです。 'はい、バグです。 –
継承は素晴らしいです。あなたの押し込みは、しかし、吸う。 –