Ucze sie dopiero programowania w c# i natknąłem się na pewien problem
1. Mam zwykła klasę "Auto" i chciałem stworzyć tablice obiektów tej klasy, chcialem także by atrybuty obiektów były wypełnione konstruktorem, starania zrobienia tego jak zwykłej tablicy nie powiodły się. W internecie zauważylem ze można do tego wykorzystać array. Zrobiłem to tak:
object[] array1 = new object[40]; // deklaracja arrayu o wielkosci 40
for (int i = 0; i < 40; i++)
{
array1[i] = new Auto(i); //stworzenie 40 obiektow klasy Auto i wsadzenie ich do array1
}
foreach (Auto element in array1) //dla kazdego elementu w array1 wykonaj metode klasy auto
{
element.Write();
}
Jak widzicie wykorzystałem foreach by wywoływać metody obiektów przechowywanych w array jednak nie mam zielonego pojęcia jak wybrać konkretny pojedynczy obiekt zawarty w array np. nr. 5 i wykonać jego metodę. Może mi ktoś doradzić jak?
Myślałem, że może da się poprzez "array1[1].Metoda();" ale tak się nie da.
**2**. Kolejna sprawa, używam Visual Studio 11 Beta ( może to będzie potrzebna informacja :P )
oto kod mojego konstruktora:
<code class="c#">public Auto(int Id)
{
id = Id;
Random rand = new Random();
pojemnosc = rand.Next(1, 5);
predkosc = rand.Next(100, 300);
switch (rand.Next(1, 5))
{
case 1: marka = "BMW"; break;
case 2: marka = "Audi"; break;
case 3: marka = "Daewoo"; break;
case 4: marka = "Mercedres"; break;
case 5: marka = "Porshe"; break;
}
}
Tworzy on obiekty z powyższego przykładu, problem polega na tym ze "losowanie" randoma jest tak jakby przeprowadzane tylko raz i wszystkie obiekty otrzymują takie same atrybuty ( oprócz id który prawidłowo jest inny dla każdego obiektu). Jednak gdy w pętli for w której tworzone są obiekty ustawie Breakpoint i puszczam program instrukcje po instrukcji to wszystko działa tak jak należy i każdy obiekt otrzymuje losowe wartości. Ktoś może wie co jest nie tak?