ArrayList et structure

cs_ChamY Messages postés 72 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 22 mai 2009 - 1 mars 2006 à 14:11
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 2 mars 2006 à 11:40
Bonjour,
J ai un petit probleme avec les arraylist.
Je stocke des structures dans mon arraylist.
Je recupere cette liste dans une autre classe. Je lis la premiere structure de ma liste et je la stocke dans une autre struct.
(donc je la stocke dans ma liste, je la lis et je rempli une autre structure vide avec la structure lue).

J'ai un erreur de compilation quand je copie.

//
private struct mastruct
{
/// les champs
}

mastruc = (structure) maliste[0] ; //(structure est la cast)
//

A l'execution du programme, (avec des points d arrets) ma liste contient bien les structures que j ai ajouté.(j arrive a bien voir les champs)
Mais au moment de copier l objet de la liste dans ma nouvelle struc j ai une erreur (cast impossible)

En gros ma question, c est comment recuperer les champs d'une liste

merci :)

4 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
1 mars 2006 à 14:34
c'est pas plutot :
//
private struct mastruct
{
/// les champs
}

mastruc = (mastruct) maliste[0] ; //(structure est la cast)
//


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
0
cs_ChamY Messages postés 72 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 22 mai 2009
1 mars 2006 à 18:28
si, c est ce que j ai fait en plus
0
cs_ChamY Messages postés 72 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 22 mai 2009
2 mars 2006 à 10:46
on m'a conseillé d'utiliser une classe a la place d'une struct
voiila mon code :

//

private
TramePosition matramePosition;



class
TramePosition (ou alors public struct TraePosition)


{
p
ublic
string ID =
"";

public
string position =
"";

public
string heure=
"";

public
string date=
"";
}



public Controleur_Position() //constructeur


{


monServeur =
new
Serveur();


matramePosition =
new
TramePosition();


}



public
void LireListe()


{


matramePosition = (
TramePosition)monServeur.malistPosition[0];



MessageBox.Show(matramePosition.position.ToString());


}

//
toujours pareil, probleme de cast, mais ca compile
une idée ?
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
2 mars 2006 à 11:40
Avec des classe à la place des struct tu évite juste le boxing/unboxing mais le problème n'est pas là.

La seule chose que je vois c'est que peut être tu mets différents objets dans ton ArrayList qui ne sont pas tous des TramePosition, non !?

Le code suivant marche très bien :

public struct MyStruct
{
public int a;
public int b;
}


// ..


MyStruct mystruct = new MyStruct( );
mystruct.a = 1;
mystruct.b = 2;
ArrayList list = new ArrayList( );
list.Add( mystruct );


MyStruct copy = ( MyStruct )list[ 0 ];


MessageBox.Show( copy.a + " / " + copy.b );

En .NET 2.0 tu peux utiliser les listes génériques et donc typées !

List< MyStruct > list = new List< MyStruct >( 10 );
0
Rejoignez-nous