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 :

La différence entre VB, VB.NET et C#


Sujet :

VB.NET

  1. #21
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par smyley Voir le message
    Combien de personnes, même ici, ont déjà réussit à faire des applications sans même savoir qu'il faut créer des instances d'un objet avant de l'utiliser, et tombent après sur des problèmes existentiels ?
    C'est clair... c'est une des choses qui me font considérer VB.NET comme un langage dédié aux débutants : surtout, ne pas faire peur au développeur en lui expliquant que sa Form est en fait une instance d'une classe

  2. #22
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    Support for named indexers.
    kesako ?

    et les itérateurs, c'est quoi le principe ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #23
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    Support for named indexers.
    kesako ?
    En gros, c'est une propriété qui prend des paramètres. Par exemple :

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private m_Scores As Dictionary(Of String, Integer)
        Public Property Score(ByVal playerName As String) As Integer
            Get
                Return m_Scores(playerName)
            End Get
            Set(ByVal Value As Integer)
                m_Scores(playerName) = Value
            End Set
        End Property

    Et tu l'utilises comme ça :

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim scoreDeJoe As Integer = toto.Score("Joe")
    ' Ou encore :
    game.Score("Joe") = 42

    Bref... au final c'est un peu pareil qu'une méthode, sauf que tu peux aussi affecter une valeur

    En C# on peut créer des indexeurs, mais seulement sur le type lui même :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private Dictionary<string, int> _scores;
     
    public int this[string playerName]
    {
        get { return _scores[playerName]; }
        set { _scores[playerName] = value; }
    }
    Et on l'utilise comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int scoreDeJoe = toto["Joe"];
    toto["Joe"] = 42;
    Citation Envoyé par Pol63 Voir le message
    et les itérateurs, c'est quoi le principe ?
    En gros, c'est une méthode qui renvoie un IEnumerable<T>, sans passer par une collection intermédiaire (donc pas besoin d'avoir fini de générer les résultats pour commencer à les lire). Un exemple bidon :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public IEnumerable<int> Fibonacci()
    {
        int a = 0;
        int b = 1;
     
        while(true)
        {
            yield return a;
            int tmp = a + b;
            a = b;
            b = tmp;
        }
    }

    Le compilateur transforme ce code en une implémentation de IEnumerator<int>, avec une machine à états.

    C'est utilisé un peu partout dans Linq... par exemple, la méthode Where doit être un truc comme ça :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static IEnumerable<T> Where<T>(this IEnumerable<T> source, Func<T, bool> predicate)
    {
        foreach(T item in source)
        {
            if (predicate(item))
                yield return item;
        }
    }

    La méthode Select :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public static IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector)
    {
        foreach(T item in source)
        {
            yield return selector(item);
        }
    }

    Un des aspects intéressants de cette technique est que l'exécution du code de l'itérateur ne se fait que quand tu commence à l'énumérer. En gros, si tu fais juste ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var fibonacciNumbers = Fibonacci();
    Ca n'exécute rien (à part affecter un objet à la variable). La méthode Fibonacci ne s'exécute au fur et à mesure que tu lis la séquence fibonacciNumbers.

  4. #24
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    donc les named indexers c'est les propriétés comme item du datareader ou controls de control si j'ai bien suivi

    et le yield qui n'existe pas en vb servirait à faire des créer IEnumerable "non synchrone"

    et les ienumerable du framework sont quand meme "asynchrone" en vb.net malgré le fait qu'on puisse pas en écrire ?
    parce que je suis parti de ce principe là, j'ai des conditions qui se rajoute avant de les parcourir ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #25
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    donc les named indexers c'est les propriétés comme item du datareader ou controls de control si j'ai bien suivi
    C'est ça. En fait Item n'est une "vraie" propriété, c'est le nom donné en VB.NET à l'indexeur du type (qui s'exprime par this[string name] en C#)

    Citation Envoyé par Pol63 Voir le message
    et le yield qui n'existe pas en vb servirait à faire des créer IEnumerable "non synchrone"

    et les ienumerable du framework sont quand meme "asynchrone" en vb.net malgré le fait qu'on puisse pas en écrire ?
    parce que je suis parti de ce principe là, j'ai des conditions qui se rajoute avant de les parcourir ...
    Ben en fait c'est pas une histoire de synchrone/asynchrone, dans le sens où tout se passe sur le même thread. C'est juste que le code de l'itérateur va en fait se retrouver dans un IEnumerator<T>, qui ne sera récupéré et parcouru que lorsqu'on va énumérer la séquence avec foreach (ou autre)

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/01/2008, 14h57
  2. Différences entre wsh, vbs, vbs.net
    Par pberanger dans le forum VBScript
    Réponses: 6
    Dernier message: 23/01/2007, 20h30
  3. Différence entre VBA 6.0 et .NET
    Par thyresias dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/10/2006, 10h14
  4. Différence entre asp et asp.net
    Par mtaveau dans le forum ASP
    Réponses: 1
    Dernier message: 01/06/2006, 12h20
  5. différence entre vb6 et vb .net
    Par trefles dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 31/12/2005, 09h28

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