Cast ArrayList(object) do ArrayList(klasa)

Cast ArrayList(object) do ArrayList(klasa)
L9
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 7 lat
  • Postów:19
0

Proszę o pomoc, ponieważ mam problem z wykonaniem pewnej operacji w c#.

Zapisuję Arraylist objektów klasy do pliku.

Kopiuj
ArrayList cards = new ArrayList();
Ccard death = new Ccard(0,"Death",10,1);
cards.Add(death);

BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, cards);
fs.Close();
 

Potem odczytuję listę z pliku. Do tej pory wszystko działa.

Kopiuj
ArrayList readcards2 = (ArrayList)bf.Deserialize(rs); 

Kiedy próbuję odczytać któreś z pól obiektu klasy dostaję komunikat:

Cannot implicitly convert type 'object' to 'ConsoleApplication2.Ccard'. An explicit conversion exists (are you missing a cast?)

Nie wiem w jaki sposób mogę z powrotem przekonwertować "object" do klasy "Ccard". Bardzo proszę o pomoc.

Sarrus
  • Rejestracja:około 14 lat
  • Ostatnio:3 dni
  • Postów:2512
5

Generalnie sprawa jest prosta:

Kopiuj
var card = (Ccard) readcards2[0];

Jest tak dlatego, że przedpotopowy typ ArrayList przechowuje elementy jako object i trzeba rzutować. Powinieneś używać bardziej nowoczesnych narzędzi jak List<T> na przykład

L9
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 7 lat
  • Postów:19
0

W takim razie spróbuję użyć innej kolekcji. Dziękuję za pomoc.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.