Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C#] Unboxing di un elemento Arraylist

    Salve a tutti.. spero stavolta di aver aperto la discussione nella sezione giusta .

    sto studiando proprio ora le matrici e gli insiemi in c# ma ho un problema che il libro non spiega

    io ho una classe Villaggi di cui creo un istanza vill:

    codice:
    public partial class Villaggi
    {
        // bla bla bla
    }
    
    public villaggi vill = new villaggi();
    e creo anche un arraylist a cui aggiungo come elemento l'istanza della classe:

    codice:
    public ArrayList villi = new ArrayList();
    villi.add(vill);

    quando pero tramite un foreach vado ad operare sugli elementi mi va in crash il programma:

    codice:
    foreach (int num in villi)
                {
                    servLisVill((villaggi)villi[num]);
                }
    mi da un errore sull'unboxing ma nn capisco dove sbaglio

    la funzione servLisVill accetta un oggetto di tipo "Villaggi" e dato che all'interno dell'array c'è solo un elemento ed è un istanza della classe "Villaggi" dovrebbe funzionare no???


  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Semplice, se ogni Item dell'arrayList e un'istanza della classe Villaggi allora:

    codice:
     ArrayList mylist = new ArrayList();
      Villaggi myVillaggio = default(Villaggi);
      mylist.Add(new Villaggi());
      myVillaggio = (Villaggi)mylist[0];
    Sbagliare è umano, perseverare è diabolico.

  3. #3
    da quel che ho capito è come l'ho fatto io giusto??? perchè ho fatto come dici ma crasha ancora

    aggiungo che da errore
    "System.InvalidCastException"
    Informazioni aggiuntive: Cast specificato non valido.
    e mi evidenzia la scritta "int num" del foreach

  4. #4
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    dovresti vedere meglio la differenza tra un ciclio for e un ciclo foreach.
    l'errore è proprio nel ciclo foreach. Devi ciclare in questo modo:
    foreach (Villaggi villaggio in villi)
    {

    }
    I got the remedy

  5. #5
    Sbaglio sempre per cavolate

    Grazie è vero... avevo copiato il ciclo foreach non notando che int num si riferiva ad un altro esercizio

    pensavo che fosse tipo il ciclo for che dichiari un int e aumenta di 1 ogni turno

    apposto si può chiudere

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.