Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : invalid cast exception !? [ Système / Mémoire ] (jimmy69)

samedi 27 octobre 2007 à 23:09:18 | invalid cast exception !?

jimmy69

Bonjour, J'ai un petit souci que je n'arrive pas a regler en net 1.1 ! J'ai une class Hand dans lequel on retrouve un arraylist m_cards que je remplis avec des enumerations. je boucle via un for sur la longueur de mon arrayList.count et j'essayes de caster mon type hand en autre objet card comme ceci Card aCard; for () { //Invalid cast exception !? aCard = (Card)m_Cards[i]; //autre traitement } Bon ca plante sur la converstion en me disant invalid cast exception !? Ouais ca ne me dit pas grand chose hormis qu'il y'a un probleme de casting pourtant ce n'est pas la premiere fois que je fais du casting et je n'ai jamais rencontre de probleme ! Auriez vous une idée de ce que je dois checker ou ma facon de caster est mauvaise ? Merci pour vos infos et bon week end Christophe

samedi 27 octobre 2007 à 23:17:54 | Re : invalid cast exception !?

coq

Administrateur CodeS-SourceS
Salut,

"un arraylist m_cards que je remplis avec des enumerations."
C'est à dire ?


/*
coq
MVP Visual C#
CoqBlog
*/

dimanche 28 octobre 2007 à 09:48:16 | Re : invalid cast exception !?

jimmy69

salut salut coq, alors voila j'ai une classe Card qui contient quelques properties et des enumerations que voici : using System; namespace DeckOfCards { //Enum public enum Suit { Hearts, Diamonds, Spades, Clubs } public enum FaceValue { Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King } /// /// Description résumée de Card. /// public class Card { public Card() { } /// /// /// /// /// public Card(Suit newSuit, FaceValue newValue) { m_Suit= newSuit; m_FaceValue = newValue; } private Suit m_Suit; public Suit Suit { get{ return m_Suit; } set { m_Suit = value; } } private FaceValue m_FaceValue; public FaceValue FaceValue { get{ return m_FaceValue; } set{ m_FaceValue = value; } } } } et une autre classe Hands auquel j'instancie mon objet card pour faire quelques tests sur le code que j'ai deja fait :-) ! J'instancie donc deux objets card avec des constructeurs differents. J'ajoute les cartes a l'array list et ensuite j'essayes de faire une methode contains qui verifie si cette carte existe ou pas ! Et dans cette methode j'ai une boucle for sur l'array list for( int i = 0; i< m_Cards.Count; i++ ) { //plante sur cette ligne aCard = (Card)m_Cards[i]; je transforme mon objet en objet card et c'est la que j'obtiens ce message d'erreur invalid cast execption ! Si tu as une idée merci pour tout ! using System; using System.Collections; namespace DeckOfCards { /// /// Description résumée de Hand. /// public class Hand { private ArrayList m_Cards = new ArrayList(); //Test public static void Main() { Card queenOfHeards = new Card(Suit.Hearts, FaceValue.Queen); Card twoOfClub = new Card(Suit.Clubs, FaceValue.Two); //Test addcard Hand aHand = new Hand( new Card[] { queenOfHeards, twoOfClub} ); //Test contains card Console.WriteLine("Hands contains queenOfHeards {0}",aHand.Contains(queenOfHeards)); //Test contains Console.WriteLine("Hands contains queen of heards {0}", aHand.Contains(Suit.Hearts, FaceValue.Queen)); } public Hand() { // TODO : ajoutez ici la logique du constructeur } public Hand(Card[] cards) { m_Cards.Add(cards); } /// /// /// /// Object public void Add(Card newCard) { m_Cards.Add( newCard ); } public bool Contains(Card carToFind) { return m_Cards.Contains(carToFind); } /******************* PLANTE SUR CETTE METHODE ***************************/ /// /// /// /// /// /// public bool Contains(Suit suitToFind, FaceValue valueToFind) { bool found= false; Card aCard; for( int i = 0; i< m_Cards.Count; i++ ) { //plante sur cette ligne aCard = (Card)m_Cards[i]; if(( aCard.Suit == suitToFind ) && ( aCard.FaceValue == valueToFind )) { found = true; } } return found; } public Card this[int indexer] { get{ return (Card)m_Cards[indexer]; } } } } Merci pour tes idées Christophe

dimanche 28 octobre 2007 à 10:00:06 | Re : invalid cast exception !?

coq

Administrateur CodeS-SourceS
Réponse acceptée !
Tu aurais dû nous donner le message d'erreur, qui doit clairement te dire que la conversion de Card[] en Card ne peut être effectué.

public Hand(Card[] cards)
{
m_Cards.Add(cards);
}

Je suppose que tu voulais plutôt utiliser la méthode AddRange ici.

Sinon tu aurais probablement intérêt à développer une classe de collection fortement typée, ça rendrais le code un peu plus propre et maintenable, à défaut d'être en .NET 2.0 et de pouvoir utiliser les generics.


/*
coq
MVP Visual C#
CoqBlog
*/

jeudi 1 novembre 2007 à 16:07:20 | Re : invalid cast exception !?

jimmy69

salut coq, merci c'etait exactement cela ! Je te remercie pour tes infos mais pour le moment j'essayes de bien saisir et comprendre la poo car des exercices que j'essayes de faire ! Merci pour tout et bon week end Christophe



Cette discussion est classé dans : invalid, exception, cast, hand, card


Répondre à ce message

Sujets en rapport avec ce message

Probleme de CAST [ par jdaviaud ] Bonjour a tous, j'aurais encore besoin d'un peu de votre aide ;)J'ai une base de données que je modifie directement dans mon datagrid, et dans ma fonc Cast Image Stocké BDD Access [ par kbumbazz ] Salut a vous ... alors bon week end ?bon voila une des 1ere requête de la semaine :)J'ai une image sotckée dans un BDD Access avec un champ de type Ob Exception sur l'ouverture d'un fichier excel [ par julien67 ] Salut à tous ! Je cherche à afficher dans un winform des valeurs que je récupère dans un fichiere excel... malgré de nombreuses recherches je reste bl [C#] reinterpret_cast ? [ par scoubidou944 ] voila, j'ai une callback de type :private static bool EvalWindow(int hWnd, int lParam){}Utilisé lors d'un appel à EnumWindows(). L de datagrid vers dataset, pb d'exception [ par delegouine ] Je dois passer d'un datagrid vers un dataset. La source de mon datagrid est un datatable, je fais donc DataTable dt = (DataTable)dataGrid1.DataSource problème de cast non valid ... [ par loussaille ] je travaille sous visual studio voilà jai un problème pour insérer un numéro auto identifiant unique dans une base sql serveur par un formulaire Windo la classe Musique [ par Online ] Voila un nouveau petit probleme.J'ai implémenté la classe Musique dans mon application Pour rappelil se trouve que j'ai aussi un tagger et que des que Pb de cast dans une proc stockée [ par Kati83 ] Bonjour,Dans ma base de données, j'ai une date au format datetime qui stocke une date au format jj/mm/aaaa.Lorsque je veux l'afficher, je fais un cast requete avec un sum et cast invalide??? [ par yanikos ] SelStr="SELECT SUM(Saison.Nbr) FROM Saison WHERE Saison.Joueur_id="+Int32.Parse(LbNum.Text)+" GROUP BY Saison.joueur_id";OleDbCommand oCmd = new OleDb Bug Socket dans DotNetFramework 1.1 [ par foucauld ] bonjour à tousLorsque j'exécute le code donné en exemple de la méthode WebClient.DownloadFile du dotNetFramework 1.1, j'obtiens une exception à la lig


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Appels d'offres

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.