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 :

Difference entre une structure et une classe [Fait]


Sujet :

C#

  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2009
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Difference entre une structure et une classe
    Bonjour,
    je voudrai connaitre les differences majeures entre une structure et une classe en C#, Et dans quel cas priviligier l'utilisation de chacune.

    Merci

  2. #2
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Structure :
    - Passé par défaut en valeur, pas par référence (modifier une structure dans une méthode n'affecte pas la structure originale que l'on a envoyé à ladite méthode)

    Classe :
    - Passée par défaut par référence (inverse de valeur)

    En gros c'est ça la différence, le reste ce sont des détails.
    En général ont peut se contenter de n'utiliser que des class, mais on utilise les struct quand on a besoin d'un objet avec quelques propriétés genre :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct Anniversaire
    {
      public string person;
      public DateTime date;
    }
    Pareil, quand on fait de l'interop (discussion avec des composants/applications natives), on utilise les struct quand on C/C++ on les utilise ... mais ça dépasse peut être le cadre de ta question ...

  3. #3
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    il y a aussi une différence au niveau de la mémoire...

    LA struct est géré sur la mémoire du process là ou la classe requiert une demande mémoire à l'OS.

    sinon, on ne peut pas initialiser les variables d'une structure dans leurs déclarations ni définir un constructeur par défaut... alors que pour une classe, on peut

  4. #4
    Membre du Club
    Profil pro
    Développeur
    Inscrit en
    Avril 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2007
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    Une classe est un type référence. Lorsqu'un objet de la classe est créé, la variable à laquelle l'objet est assigné contient uniquement une référence à cette mémoire. Lorsque la référence d'objet est assignée à une nouvelle variable, la nouvelle variable fait référence à l'objet d'origine. Les modifications effectuées par le biais d'une variable sont répercutées dans l'autre variable car toutes deux font référence aux mêmes données.

    Un struct est un type valeur. Lorsqu'un struct est créé, la variable à laquelle le struct est assigné contient les données réelles du struct. Lorsque le struct est assigné à une nouvelle variable, il est copié. La nouvelle variable et la variable d'origine contiennent par conséquent deux copies distinctes des mêmes données. Les modifications apportées à une copie n'affectent pas l'autre copie.

    En général, les classes sont utilisées pour modeler un comportement plus complexe ou des données censées être modifiées après la création d'un objet de classe. Les structs conviennent mieux aux petites structures de données contenant principalement des données qui ne sont pas censées être modifiées après la création du struct.
    Ceci est tiré de la doc MSDN : http://msdn.microsoft.com/fr-fr/library/ms173109.aspx

  5. #5
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Points : 311
    Points
    311
    Par défaut
    Citation Envoyé par theMonz31 Voir le message
    LA struct est géré sur la mémoire du process là ou la classe requiert une demande mémoire à l'OS.
    C'est ce qui explique qu'une struct est intrinsèquement beaucoup plus rapide à manipuler qu'une classe.

    Le revers de la médaille, c'est qu'on peut créer un débordement de pile du processeur si on en crée trop à la fois (faut quand même y aller fort ).
    Le compilateur est également assez contraignant avec les struct ce qui fait qu'elles sont fonctionnellement limitées.

    A toi de choisir...

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Il y aussi une différence très importante qui n'a pas été mentionnée :

    Une structure ne peut pas hériter ni être héritée. (en revanche elle peut implémenter une interface).

Discussions similaires

  1. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  2. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  3. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  4. Réponses: 5
    Dernier message: 12/10/2008, 13h41
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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