通过对象数组访问对象

时间:2011-09-06 13:06:48

标签: c# object

我想学习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();

2 个答案:

答案 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 ); 
}