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

VB.NET Discussion :

Conversion de code C# en VB


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 63
    Par défaut Conversion de code C# en VB
    Bonjour,

    je voudrais une confirmation (ou correction) pour ces 2 traductions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            IEnumerator<IXLCell> IEnumerable<IXLCell>.GetEnumerator()
            {
                foreach (XLCell cell in this)
                    yield return cell;
            }
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Function IEnumerable_GetEnumerator() As IEnumerator(Of IXLCell) Implements IEnumerable(Of IXLCell).GetEnumerator
       For Each cell As XLCell In Me
            'yield Return cell
            Return cell
       Next
    End Function
    mon problème est bien sûr YIELD qui n'existe pas en VB donc est-ce bon ou faut-il ajouter autre chose ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public IXLRanges RangesUsed
    {
        get
         {
           var retVal = new XLRanges {AsRange()};
           return retVal;
          }
    }
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public ReadOnly Property RangesUsed() As IXLRanges
      Get
         Dim retVal = New XLRanges() From {AsRange()}
         Return retVal
      End Get
    End Property
    là mon problème est qu'en Visual studio 2008 le message
    Fin d'instruction attendue pour "From {AsRange()}"
    Merci d'avance à ceux qui peuvent m'aider.

    Cdt

  2. #2
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Bonjour.

    VB ne supporte tout simplement pas cette fonctionnalité. Donc il faut soit ajouter les éléments à une liste que l'on retournera, soit écrire un énumérateur personnalisé.

  3. #3
    Membre confirmé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 63
    Par défaut
    Merci pour la réponse sur le 1er sujet,

    pourriez-vous me fournir un exemple succint pour le cas présenté afin que je puisse m'en inspirer mais pas trop généraliste si c'est possible.


    Avez-vous une idée pour le 2ème cas ? et de même si vous avez un exemple concret cela me permettrait de comprendre la logique à appliquer en VB.

    D'avance merci

  4. #4
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Bonjour.

    Vu ma capacité à écrire du code VB, non pas d'exemple entier, trop ennuyeux.
    Mais il s'agit simplement d'instancier une liste, d'ajouter successivement les éléments puis de retourner la liste. Pour l'énumérateur, il suffit d'aller voir la doc MSDN de IEnumerator.

    Cela dit, le code a peut-être été écrit avant le support de la covariance. Si la classe implémente IEnumerable(Of T) avec T qui implémente IXCell, pas besoin de redéclarer l'interface IEnumerable(Of IXCell) et de refaire la méthode.

    En effet, en C# du moins, IEnumerable(Of XCell) est implictement casté en IEnumerable(Of IXCell). Je suppose qu'il en va de même en VB.

  5. #5
    Membre confirmé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 63
    Par défaut
    Merci DonQuiche,

    justement je demandais un exemple concret afin de m'éviter de lire la documentation et de faire des erreurs, d'habitude je préfère m'appuyer d'abord sur un exemple et lire après la théorie souvent ardue afin de bien la comprendre, les exemples fournis par Microsoft n'étant pas toujours très pragmatique.


    Cela dit, le code a peut-être été écrit avant le support de la covariance. Si la classe implémente IEnumerable(Of T) avec T qui implémente IXCell, pas besoin de redéclarer l'interface IEnumerable(Of IXCell) et de refaire la méthode.
    ce n'est pas le cas, le code est récent, donc de ce côté pas de problème.


    Donc je laisse la discusion ouverte au moins pour la 2ème traduction.

    Cdt

  6. #6
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Citation Envoyé par prady92 Voir le message
    ce n'est pas le cas, le code est récent, donc de ce côté pas de problème.
    Note qu'il peut aussi avoir été écrit par quelqu'un qui ne connaissait pas a covariance.

    La classe implémente IEnumerable(Of T). T implémente t-il IXCell ? Si oui, pas besoin de déclarer IEnumerable(Of IXCell) et d'écrire cette méthode.

Discussions similaires

  1. Conversion des codes VBA Access en VB6
    Par cokouT dans le forum Access
    Réponses: 1
    Dernier message: 23/11/2006, 09h52
  2. Problème : HOOK - Conversion de code virtuel de touche
    Par Dev_Michael dans le forum Delphi
    Réponses: 5
    Dernier message: 19/10/2006, 19h08
  3. [pl/sql]conversion de code
    Par yessine1979 dans le forum Oracle
    Réponses: 2
    Dernier message: 30/08/2006, 09h41
  4. [VB.net]problème de conversion de code c# vers VB.net
    Par cladsam dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/10/2005, 14h07
  5. [VB.NET] Erreur conversion de code c=>vb (opendialogfile)
    Par hirochirak dans le forum Windows Forms
    Réponses: 19
    Dernier message: 02/06/2004, 16h31

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