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 :

Comment passer et récupérer des parametres ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut Comment passer et récupérer des parametres ?
    Bonjour

    Malgré ma longue expérience du C, j'ai encore quelques problèmes conceptuel a digerer certains passage de parametres en cSharp

    Je déclare une structure dans une classe
    J'y mets quelques info (filename etc)
    Je passe cette structure a une Form qui doit completer les infos

    Jusque la tout va bien mais je vois pas bien comment recuperer ma structure completée apres l'appel de la form

    Dans ma classe qui appelle la form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
          ImportDef ImpDef = new ImportDef(); // structure d'info
     
          ImpDef.FileName = dlgFile.FileName;   // ajout de filename
          Form FrmImp = new FrmImportDef(ImpDef); // passage structure par constructeur
          FrmImp.ShowDialog();
    Ensuite pour l'utilisation dans la form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      public partial class FrmImportDef : Form
      {
        ImportDef ImpDef;  // reference pour ma structure dans la form
        public FrmImportDef(ImportDef PRM_ImpDef)
        {
          ImpDef = PRM_ImpDef; // assignation de la structure a la reference
          InitializeComponent();
          Timp();
        }
    Je comprends que je ne passe pas un pointeur...
    Mais comment dois-je organiser le passage de parametre pour qu'a la fermeture de la form appelée je puisse recuperer les info modifiées dans ImpDef

  2. #2
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Ajoute le mot-clef ref dans la signature (et de même sur l'appel) de la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public FrmImportDef(ref ImportDef PRM_ImpDef)

  3. #3
    Expert confirmé
    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
    Par défaut
    Et pourquoi tu utilises une struct et pas une classe ?
    Les struct sont par défaut passées par valeur (donc copiées vers l'appelant, et la modifier ne modifie pas l'original). En utilisant une class tu n'a pas besoin du mot clef "ref" car elles sont toujours passée par référence (pointeur).
    De plus, question forme, une struct et une classe ça n'a que ça comme différence (en gros)...

  4. #4
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut classe au lieu de structure
    Tu a sans doute raison

    J'utilise des structures par habitude du C

    Et j'avais aussi le sentiment que les classes en csharp c'etait chaque fois des fichiers différents !

  5. #5
    Expert confirmé
    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
    Par défaut
    Tu peut organiser comme tu veux, c'est juste que une classe par fichier, en général on arrive à quelque chose de plus clair...
    En gros, tu peut toujours utiliser des class et à la limite oublier les struct, ça n'est vraiment utile que pour appeller des dlls natives ou si on veut passer un paramètre en interdisant justement de modifier l'original, mais là encore les structs ne sont pas toujours les mieux adaptées ...

  6. #6
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    Bonsoir,

    Citation Envoyé par olibara Voir le message
    Et j'avais aussi le sentiment que les classes en csharp c'etait chaque fois des fichiers différents !
    Une classe = une structure = une interface = un fichier.

    Remarque: Les interfaces et structures peuvent aussi être partielles...

  7. #7
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par harz62 Voir le message
    Une classe = une structure = une interface = un fichier.
    Faux, ne dit pas de choses pareilles ...

    Une classe != une structure
    Les classes sont passée par référence, les structures sont passées par valeur

    Une classe != une interface
    Une interface c'est juste la définition d'un certain nombre de membres, de méthodes et d'évènements que vont implémenter une classe. Elles sont aussi passée par référence mais on ne peut pas les instancier, elles n'ont pas de constructeur, on ne peut pas y mettre de variables, etc ... Une interface peut hériter de plusieurs autres interfaces, une classe ne peut pas hériter de plusieurs classes. Par contre, elle peut implémenter plusieurs interfaces.

    Un classe != un fichier
    Tu peut mettre 30 classes dans un seul fichier le compilateur ne te dira rien. Tu peut aussi mettre 0 classes dans un fichier et il ne te parlera pas plus ...

Discussions similaires

  1. Comment passer le sqlquery en parametres
    Par ceriise dans le forum Jasper
    Réponses: 1
    Dernier message: 15/11/2007, 15h29
  2. Réponses: 2
    Dernier message: 06/04/2007, 10h26
  3. Comment passer et lire des paramètres passé à mon application VB
    Par ssakhri dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 27/11/2006, 16h50
  4. Réponses: 4
    Dernier message: 20/04/2006, 11h07
  5. comment passer un iterateur en parametre
    Par mikebranque dans le forum C++
    Réponses: 1
    Dernier message: 18/03/2006, 12h03

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