开发者

Acessing object through object array

开发者 https://www.devze.com 2023-04-02 14:14 出处:网络
I want to learn classes atm and here is what I came up with: Class level to create a level. This class has an object array that fills itself with rooms (raeume) which is the other class. Now, I want

I want to learn classes atm and here is what I came up with:

Class level to create a level. This class has an object array that fills itself with rooms (raeume) which is the other class. Now, I want to access the objects in the object array from room, after I inserted them. Here is what I want to type:

wohnung.rooms[i].raumname.toString();

Here are the two classes

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;
        }
    }
}

Here is how I set everything up.

level wohnung = new level();
        raum keller = new raum();
        raum wohnzimmer = new raum();
        raum kueche = new raum();
        raum schlafzimmer = new raum();
        wo开发者_JS百科hnung.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();


You have to use generic typed list List<T> (See on MSDN) instead of array, in this case you'll have the indexed access for the typed list elements

So instead of:

static object[] o_rooms = new object[100];      
public object[] rooms 

Use:

static IList<raum> o_rooms = new List<Raum>(100);      
public IList<raum> rooms


Try this(in the for Loop):

Console.WriteLine("Wohnung beinhaltet jetzt " + (wohnung.rooms[i] as raum).raumname ); 

You would be better off using generics though in which case the class level would now look like:

class level 
{     
    static List<raum> o_rooms = new List<raum>();
    public List<raum> rooms
    {         
        get         {             return o_rooms;          }         
        set         {             o_rooms = value;         }     
    }
} 

and the for loop can be replaced with a foreach loop as follows:

foreach(raum room in wohnung.rooms)
{
    Console.WriteLine("Wohnung beinhaltet jetzt " + room.raumname ); 
}
0

精彩评论

暂无评论...
验证码 换一张
取 消