我想学习atm课程,这是我想出来的:
创建关卡的类级别。这个类有一个对象数组,它充满了自己的房间(raeume),这是另一个类。现在,我想在插入后从房间访问对象数组中的对象。这是我要输入的内容:
wohnung.rooms[i].raumname.toString();
以下是两个班级
class raum
{
static object[] o_nebenraum = new object[3]; //N-O-S-W
static string s_raumname = "";
public object[] nebenraume
{
get
{
return o_nebenraum;
}
set
{
o_nebenraum = value;
}
}
public string raumname
{
get
{
return s_raumname;
}
set
{
s_raumname = value;
}
}
}
class level
{
static object[] o_rooms = new object[100];
public object[] rooms
{
get
{
return o_rooms;
}
set
{
o_rooms = value;
}
}
}
以下是我设置一切的方法。
level wohnung = new level();
raum keller = new raum();
raum wohnzimmer = new raum();
raum kueche = new raum();
raum schlafzimmer = new raum();
wohnung.rooms[0] = keller;
wohnung.rooms[1] = wohnzimmer;
wohnung.rooms[2] = kueche;
wohnung.rooms[3] = schlafzimmer;
keller.raumname = "Keller";
wohnzimmer.raumname = "Wohnzimmer";
kueche.raumname = "Küche";
schlafzimmer.raumname = "Schlafzimmer";
for (uint i = 0; i < 3; i++)
{
Console.WriteLine("Wohnung beinhaltet jetzt " + *MISSING CODE PART, I WANT TO GET THE .raumname out of the object array from wohnung.room*);
}
Console.ReadKey();
答案 0 :(得分:2)
您必须使用通用类型列表List<T>
(See on MSDN)而不是数组,在这种情况下,您将拥有类型的索引访问权限/ em>列表元素
所以而不是:
static object[] o_rooms = new object[100];
public object[] rooms
使用:
static IList<raum> o_rooms = new List<Raum>(100);
public IList<raum> rooms
答案 1 :(得分:1)
试试这个(在for循环中):
Console.WriteLine("Wohnung beinhaltet jetzt " + (wohnung.rooms[i] as raum).raumname );
你最好使用泛型,但在这种情况下,类级现在看起来像:
class level
{
static List<raum> o_rooms = new List<raum>();
public List<raum> rooms
{
get { return o_rooms; }
set { o_rooms = value; }
}
}
并且for
循环可以用foreach
循环替换,如下所示:
foreach(raum room in wohnung.rooms)
{
Console.WriteLine("Wohnung beinhaltet jetzt " + room.raumname );
}