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

Windows Forms Discussion :

[C#]Comment ne pas avoir de constructeur par défaut pour une srtucture?


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 28
    Points : 13
    Points
    13
    Par défaut [C#]Comment ne pas avoir de constructeur par défaut pour une srtucture?
    Bonjour à tous.
    J'aimerais créer une structure qui ne propose qu' un constructeur avec paramètres et pas de constructeur par défaut. Pour une classe il suffit de mettre le constructeur par défaut en private, mais pour une structure, cela n'est pas possible.

    Quelqu'un aurait une idée ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    ecoute je comprend pas chez moi ça marche très bien il suffit de pas mettre de constructeur par défaut :
    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
       public struct Condition
        {
            public Condition(String Var, String Sig, String Val)
            {
                Variable = Var;
                Signe = Sig;
                Value = Val;
            }
            public String Variable;
            public String Signe;
            public String Value;
            public override string ToString()
            {
                return "SI "+Variable + " " + Signe + " " + Value;
            }
    }
    1 || 1 = 1
    1 && 1 = 1
    1 * 1 = 1
    Bon après tout, peut-être que Van Damme avait raison :
    1 + 1 = 1 // harmonie parfaite

  3. #3
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 28
    Points : 13
    Points
    13
    Par défaut
    Merci pour ta réponse ekinox17.
    J'ai copié le code de ta structure mais j'ai quand même pu créer une instance avec le constructeur par défaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Condition myCondition = new Condition();

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    En définissant explicitement ton constructeur par défaut en private, ça ne fonctionne pas?

  5. #5
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 28
    Points : 13
    Points
    13
    Par défaut
    Salut NicolasJolet.
    Justement, dans mon premier post, je disais que j'ai essayé et que ca ne fonctionne pas

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    J'avais lu trop vite, désolé

    Par contre, pourquoi ne pas simplement utiliser une classe?
    Je ne pense pas qu'en terme de performance en C# une structure soit meilleure qu'une classe.

  7. #7
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 28
    Points : 13
    Points
    13
    Par défaut
    Apparement les structures sont crées dans la pile. Après je ne sais pas ce que ça implique en terme de performances.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Points : 80
    Points
    80
    Par défaut
    Les structures ont TOUJOURS un constructeur sans paramètre, tu ne peux rien y faire.
    Cela veut dire qu'on ne sait pas si une instance donnée d'une structure a des valeurs corrects ou pas.

    Utiliser des structures juste parce qu'on se dit que ce sera peut-être plus performant n'est pas une bonne idée.

    Attention on ne peut pas non plus utiliser d'heritage avec les structures.

    A vrai dire je n'utilise que rarement des structure, quand je le fait c'est généralement que je considère la structure comme un "sac de données" que je peux remplir et passer d'un bout a l'autre de mon appli.

  9. #9
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Différence entre classe et structure :
    http://www.developpez.net/forums/sho...d.php?t=203616

    On ne peut pas surcharger le constructeur par défaut (sans ragument) d'une structure. Celui-ci initialise automatiquement les champs de type valeur (ex : int) à 0 et les champs de type référence à null.
    De plus, dans tes differents constructeurs (autre que le constructeur par défaut) tu doit initialiser tous les champs de la structure.
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

Discussions similaires

  1. constructeur par défaut dans une exception
    Par giova_fr dans le forum C#
    Réponses: 2
    Dernier message: 26/02/2013, 08h21
  2. Réponses: 3
    Dernier message: 22/03/2011, 12h56
  3. Réponses: 1
    Dernier message: 07/12/2010, 10h57
  4. Constructeur par défaut pour une classe fille
    Par Difré91 dans le forum Langage
    Réponses: 6
    Dernier message: 05/11/2010, 21h00
  5. Réponses: 5
    Dernier message: 13/05/2009, 18h22

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