begin process at 2012 02 11 10:26:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Mémoire

 > 

invalid cast exception !?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

invalid cast exception !?

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ée 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

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales