IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Erreur de débutant (Classe?)


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Par défaut Erreur de débutant (Classe?)
    Salut à tous !

    donc j'essaie de me remettre au C# avec une application Windows Forms, et je n'arrive même pas a compiler un truc super simple

    ça me dégoute un peu donc je viens posé la question ici après quelques recherches peu fructueuses sur la chose, car admettons le, je ne comprend pas trop l'erreur... donc je ne sais pas trop sur quoi chercher!

    Donc voilà mon simple petit bout de code tout ridicule qui me pose problème:`

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    public class Character
    {
        public Wealth Wealth { get; set; }
        public Class Class { get; set; }
        public Stats Stats { get; set; }
    }
     
    public class Stats
    {
        public int Str { get; set; }
        public int Dex { get; set; }
        public int Con { get; set; }
        public int Wis { get; set; }
        public int Int { get; set; }
        public int Cha { get; set; }
        public int HP { get; set; }
    }
     
    public class Wealth
    {
        public int Platinium { get; set; }
        public int Gold { get; set; }
        public int Silver { get; set; }
        public int Copper { get; set; }
    }
     
    public class Class
    {
        public int ClassID { get; set; }
        public int Level { get; set; }
        public int HD { get; set; }
    }
     
    namespace Pathfinder_Character_Generator
    {
        public partial class FCharacter : Form
        {
            public FCharacter()
            {
                InitializeComponent();
                Character Current = new Character();
                Current.Stats.Str = 18;
                Current.Stats.Dex = 16;
                Current.Stats.Con = 14;
                Current.Class.Level = 12;
                Current.Class.HD = 10;
                Current.Stats.HP = (Current.Class.HD + ((Current.Stats.Con - 10) / 2)) * Current.Class.Level;
                LblHP.Text = Current.Stats.HP.ToString();
            }
        }
    }
    Il plante dès la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Current.Stats.Str = 18;
    avec l'erreur
    La référence d'objet n'est pas définie à une instance d'un objet.
    qui me parle autant qu'une phrase en dialecte chinois de fond de campagne

    Donc j'aimerais juste comprendre ce que j'ai fais de pas correct là-dedans, car apparemment mon visual studio aime pas ca


    Amuny,

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Character Current = new Character();
    Tu instancies un nouvel objet de type Character, ça c'est OK. Mais tu n'initialises pas ses membres.

    En te limitant à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Character
    {
        public Wealth Wealth { get; set; }
        public Class Class { get; set; }
        public Stats Stats { get; set; }
    }
    Wealth, Class et Stats seront toujours à null car ce sont des classes et que par défaut si tu ne fais rien c'est initialisé à null. Et donc ça plante lorsque tu t'en sers.

    Il faut donc que tu initialises proprement l'objet. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Character
    {
        public Wealth Wealth { get; set; }
        public Class Class { get; set; }
        public Stats Stats { get; set; }
     
        public Character()
        {
            this.Wealth = new Wealth();
            this.Class = new Wealth();
            this.Stats = new Wealth();
        }
    }
    Ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Character
    {
        public Wealth Wealth { get; set; }
        public Class Class { get; set; }
        public Stats Stats { get; set; }
     
        public Character(Wealth wealth, Class class, Stats stats)
        {
            this.Wealth  = wealth;
            this.Class = class;
            this.Stats = stats;
        }
    }
    Après à toi de faire ça de la manière qui semble la plus naturelle lorsque tu vas utiliser ces classes.

    Sinon attention au nom de tes classes/variables. Class pour une classe ce n'est pas l'idéal puisqu'il ne diffère que par la casse avec le mot clé du langage class. Cela peut être source d'erreur. De même que Int (pour intelligence) qui ne diffère que par la case avec int, qui représente un entier 32 bits (raccourci vers la structure Int32)).

    Par conte la question n'a absolument aucun rapport avec Windows Forms. Ce n'est pas parce que tu travailles sur un projet Windows Forms qu'il faut poster dans le forum Windows Forms. Il faut savoir faire la part des choses et bien choisir le forum en conséquence

    Et prend le temps de lire le cours C# du site, à mon avis ça ne sera pas du temps de perdu et tu y verras plus clair sur pas mal de choses

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Par défaut
    Ah bien oui ça me semble bien logique! Du coup ça fonctionne mieux

    Merci! Et effectivement, je ferai attention ou je post... j'étais un peu incertain sur la chose honnêtement y'en a tellement que c'est un peu embêtant des fois

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [débutant]class File : delete/renameTo()
    Par Zazawitch dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 23/01/2006, 21h36
  2. [Tableaux] [Débutant ) Classes
    Par Halobox dans le forum Langage
    Réponses: 5
    Dernier message: 12/01/2006, 15h50
  3. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45
  4. [Thread] Erreur dans une classe interne
    Par totof2308 dans le forum Général Java
    Réponses: 5
    Dernier message: 03/06/2004, 08h15
  5. [Débutant]Classe d'Authentification : compilation impossible
    Par acyclique dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 23/08/2003, 19h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo