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 :

RedimStatement de VB en Csharp


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Par défaut RedimStatement de VB en Csharp
    Bonjour,
    Je bloque sur la conversion d'un code VB en Csharp. Le code redimensionne des tableaux.
    Extrait du code VB:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     Dim oMarketsReq As New BFUK.GetAllMarketsReq
      Dim oMarketsResp As BFUK.GetAllMarketsResp
      With oMarketsReq
        .header = oHeaderUK()
        ReDim .eventTypeIds(0) : .eventTypeIds(0) = 7  
        ReDim .countries(1) : .countries(0) = "GBR" : .countries(1) = "ZAF"
        .fromDate = Today
        .toDate = Today.AddDays(1)
      End With

    Code convertit en Csharp:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     BFUK.GetAllMarketsReq oMarketsReq = new BFUK.GetAllMarketsReq();
         BFUK.GetAllMarketsResp oMarketsResp = default(BFUK.GetAllMarketsResp);
         {
             oMarketsReq.header = oHeaderUK();
             // ERROR: Not supported in C: ReDimStatement
             oMarketsReq.eventTypeIds[0] = 7;
              // ERROR: Not supported in C: ReDimStatement
             oMarketsReq.countries[0] = "GBR";
             oMarketsReq.countries[1] = "ZAF";
             oMarketsReq.fromDate = DateTime.Now;
             oMarketsReq.toDate = DateTime.Now.AddDays(1);
         }
    J'obtiens évidement une NullReferenceException pour eventTypeIds et countries.
    Comment dois-je m'y prendre sachant que je ne suis guère familier avec l'utilisation des arrays?

    Merci.

  2. #2
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    A moins de connaître le nombre total d'éléments, je te conseillerais plutôt d'utiliser des List<>.

    Avec des tableaux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    oMarketsReq.eventTypeIds = new Int32[5]; // Nombre total d'élément : 5
    oMarketsReq.countries = new String[10]; // Nombre total d'éléments : 10

    Avec des List :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    oMarketsReq.eventTypeIds = new List<Int32>(); // Nombre total d'éléments indéfinis
    oMarketsReq.countries = new List<String>(); // Nombre total d'éléments indéfinis

    Seulement il faudra penser à modifier le type de eventTypeIds et de countries
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  3. #3
    Membre chevronné Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Par défaut
    Merci pour ton aide.

    En fait oMarketsReq fait référence à une structure d'un service web. Je ne suis pas sûr des termes que j'emplois, mais bon passons...

    Pour countries étant un array de string, cela n'a pas était trop dur, par contre, pour eventIds, l'intellisense me dit qu'il est de type : int?[]. Je n'arrivais pas à le caster en int32.
    Ainsi j'ai procédé de la façon suivante, je ne suis pas sûr que cela soit l'idéal mais en tout cas cela marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    oMarketsReq.eventTypeIds = new System.Nullable<int>[1];
             oMarketsReq.eventTypeIds[0] = 7;
     
     oMarketsReq.countries = new String[2];
             oMarketsReq.countries[0] = "GBR";
             oMarketsReq.countries[1] = "ZAF";
    Bonne journée à tous!

  4. #4
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    Tu as fais comme il fallait : le ? désigne un type nullable, que l'ont peut déclarer de deux manière soit par ?, qui la notation raccourci, soit comme tu l'a fait, via le type générique Nullable<>
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  5. #5
    Membre chevronné Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Par défaut
    Citation Envoyé par laedit Voir le message
    Tu as fais comme il fallait : le ? désigne un type nullable, que l'ont peut déclarer de deux manière soit par ?, qui la notation raccourci, soit comme tu l'a fait, via le type générique Nullable<>
    Ok nickel!

    J'en apprends tous les jours, encore merci à toi!

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

Discussions similaires

  1. DsoFile Thumbnail en Csharp
    Par mathieu gérard dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 11/04/2008, 14h17
  2. [Divers]Choisir un livre CSharp
    Par Shuny dans le forum Livres
    Réponses: 13
    Dernier message: 01/05/2007, 14h51
  3. Probleme sur un programme en Csharp
    Par zambo dans le forum C#
    Réponses: 9
    Dernier message: 20/04/2007, 11h57
  4. Réponses: 7
    Dernier message: 29/01/2007, 13h37
  5. Réponses: 9
    Dernier message: 01/02/2006, 09h49

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