Publicité
+ Répondre à la discussion Actualité déjà publiée
Affichage des résultats 1 à 15 sur 15
  1. #1
    Rédacteur


    Avatar de Jérôme Lambert
    Homme Profil pro Jérôme Lambert
    Développeur .NET
    Inscrit en
    novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme Lambert
    Âge : 30
    Localisation : Belgique

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

    Informations forums :
    Inscription : novembre 2003
    Messages : 4 451
    Points : 13 636
    Points
    13 636

    Par défaut Les nouveautés de C# 5.0

    Bonjour,

    Cet article présente les deux grandes nouvelles fonctionnalités du langage C# en version 5.0.

    À l'heure à laquelle j'écris cet article, les outils et composants de Microsoft cités sont au stade de la Release Candidate et c'est sur cette version-là que les exemples ont été réalisés.

    L'article est accessible ici !

    N'hésitez pas commenter et noter cet article

    Bonne lecture à tous !
    Jérôme Lambert, Développeur, Architecte, Rédacteur & Fan technologies Microsoft

    Mon blog "My Microsoft Development World"


    Participez au sondage sur le successeur de Microsoft "Next Microsoft CEO"

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mars 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2011
    Messages : 262
    Points : 385
    Points
    385

    Par défaut

    Bonjour,

    Il y a une coquille sur le premier tableau. Les iterateurs etaient présent dès C# 1.0.

    L'avant dernier bout de code du paragraphe II n'est pas coloré correctement. Et tous comme le bout de code suivant les "<" sont mal affichés
    Func&lt;Task&gt;
    Sinon la partie async n'a pas du être simple à écrire, on ne peut que te féliciter pour la facilité de compréhension que tu donnes sur le sujet.

    Par contre j'ai une petite question les nouveaux attributs. Si je tag un paramètre nommé toto avec CallerMemberName. La valeur de toto est elle saisie a la compilation, ou a l’exécution via un quelconque mécanisme de réflexion?
    Y'a-t-il un attribut pour récupérer l'instance appelante?
    Le fait que cela ne marche qu'avec Visual 2012, me laisse penser que c'est à la compilation.

  3. #3
    Rédacteur


    Avatar de Jérôme Lambert
    Homme Profil pro Jérôme Lambert
    Développeur .NET
    Inscrit en
    novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme Lambert
    Âge : 30
    Localisation : Belgique

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

    Informations forums :
    Inscription : novembre 2003
    Messages : 4 451
    Points : 13 636
    Points
    13 636

    Par défaut

    Bonjour,

    Merci pour ces quelques remarques et compliments

    Pour ce qui est des itérateurs, ils sont apparus avec C# 2.0.
    (source: http://msdn.microsoft.com/fr-fr/libr...(v=vs.80).aspx)

    Pour les deux coquilles avec le code, je vais corriger cela ce soir, merci !

    Pour les nouveaux attributs, c'est bien à la compilation que les valeurs sont résolues. Si on prend mon exemple avec l'exception :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    static void Main(string[] args)
    {
        try
        {
            int i = int.Parse("test");
        }
        catch (Exception exc)
        {
            new LogManager().LogException(exc);
        }
    }
    Le code compilé ressemblera à quelque chose de ce genre :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    static void Main(string[] args)
    {
        try
        {
            int i = int.Parse("test");
        }
        catch (Exception exc)
        {
            new LogManager().LogException(exc, "Main", "Program.cs", 10);
        }
    }
    C'est le compilateur qui s'occupe de spécifier correctement les paramètres optionnels ayant été décorés avec les nouveaux attributs.
    Jérôme Lambert, Développeur, Architecte, Rédacteur & Fan technologies Microsoft

    Mon blog "My Microsoft Development World"


    Participez au sondage sur le successeur de Microsoft "Next Microsoft CEO"

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mars 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2011
    Messages : 262
    Points : 385
    Points
    385

    Par défaut

    Citation Envoyé par Jérôme Lambert Voir le message
    Pour ce qui est des itérateurs, ils sont apparus avec C# 2.0.
    (source: http://msdn.microsoft.com/fr-fr/libr...(v=vs.80).aspx)
    Ah c'est yield qui est apparu avec C# 2, toutes mes excuses je pensais à IEnumerator.

  5. #5
    Membre Expert

    Homme Profil pro Gilles Vino
    Software Developer
    Inscrit en
    mars 2008
    Messages
    1 477
    Détails du profil
    Informations personnelles :
    Nom : Homme Gilles Vino
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Software Developer

    Informations forums :
    Inscription : mars 2008
    Messages : 1 477
    Points : 2 270
    Points
    2 270

    Par défaut

    Super article

    async - await est une grande nouveauté, a la fois simple et puissant tout en était d'extremement lisible.
    Par contre les choses se compliquent lorsque plusieurs taches asynchrones dépendent l'une de l'autre (synchronisation), et a ce jour ils ne semblent toujours pas avoir simplifié ce probleme.

    101 exemples MSDN: http://www.wischik.com/lu/AsyncSilve...ncSamples.html

  6. #6
    Membre Expert
    Homme Profil pro Mickael
    Développeur .NET
    Inscrit en
    novembre 2009
    Messages
    788
    Détails du profil
    Informations personnelles :
    Nom : Homme Mickael
    Âge : 25
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : novembre 2009
    Messages : 788
    Points : 1 280
    Points
    1 280

    Par défaut

    Citation Envoyé par alex_vino Voir le message
    Super article

    async - await est une grande nouveauté, a la fois simple et puissant tout en était d'extremement lisible.
    Par contre les choses se compliquent lorsque plusieurs taches asynchrones dépendent l'une de l'autre (synchronisation), et a ce jour ils ne semblent toujours pas avoir simplifié ce probleme.
    J'imagine qu'en méttant plusieurs await à la suite ca devrait être bon non?
    Bon apres si l'on offre la possibilité de déclencher les actions par divers biais...Mais bon du coup le cas ou il faut tout de même attendre les résultats d'autre action que l'on a même pas "prévu" c'est plutot étrange non?

  7. #7
    Rédacteur


    Avatar de Jérôme Lambert
    Homme Profil pro Jérôme Lambert
    Développeur .NET
    Inscrit en
    novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme Lambert
    Âge : 30
    Localisation : Belgique

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

    Informations forums :
    Inscription : novembre 2003
    Messages : 4 451
    Points : 13 636
    Points
    13 636

    Par défaut

    Citation Envoyé par alex_vino Voir le message
    Super article

    async - await est une grande nouveauté, a la fois simple et puissant tout en était d'extremement lisible.
    Par contre les choses se compliquent lorsque plusieurs taches asynchrones dépendent l'une de l'autre (synchronisation), et a ce jour ils ne semblent toujours pas avoir simplifié ce probleme.

    101 exemples MSDN: http://www.wischik.com/lu/AsyncSilve...ncSamples.html
    Les task existent depuis le .NET Framework 4.0 et il existe une multitude de méthodes (ContinueWith, Wait, WaitAny, WaitAll, etc) permettant de construire des synchronisations plus complexes :

    http://msdn.microsoft.com/fr-fr/libr...asks.task.aspx

    Par contre, il est vrai que la lecture/relecture n'est pas aisée et async/await n'a pas pour but de simplifier ces deux points.
    Jérôme Lambert, Développeur, Architecte, Rédacteur & Fan technologies Microsoft

    Mon blog "My Microsoft Development World"


    Participez au sondage sur le successeur de Microsoft "Next Microsoft CEO"

  8. #8
    Expert Confirmé Sénior
    Avatar de Immobilis
    Inscrit en
    mars 2004
    Messages
    6 551
    Détails du profil
    Informations forums :
    Inscription : mars 2004
    Messages : 6 551
    Points : 7 240
    Points
    7 240

    Par défaut

    Salut,

    Merci pour cet article

    Des caractères sont mal affichés dans le code du paragraphe "II. Méthodes asynchrones"
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private async void buttonDownload_Click(object sender, RoutedEventArgs e)
    {
        var client = new WebClient();
     
        Func&lt;Task&gt; delegateToDownloadAsString = async delegate()
            {
                var result = await client.DownloadStringTaskAsync(new Uri(textboxURL.Text));
                textboxResult.Text = result;
            };
     
        await delegateToDownloadAsString();
    }
    Excellent!

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  9. #9
    Membre éprouvé Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    juin 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Âge : 27
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : juin 2007
    Messages : 532
    Points : 441
    Points
    441

    Par défaut

    Merci pour cet article très intéressant.

    Quand le c# sera-t-il disponible en 5.0 ? est-il déjà en place sur VS2012 ?

    Je suis déjà amoureux du async/await
    Je fais ce que je dis et je dis ce que je veux .

  10. #10
    Membre Expert

    Homme Profil pro Gilles Vino
    Software Developer
    Inscrit en
    mars 2008
    Messages
    1 477
    Détails du profil
    Informations personnelles :
    Nom : Homme Gilles Vino
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Software Developer

    Informations forums :
    Inscription : mars 2008
    Messages : 1 477
    Points : 2 270
    Points
    2 270

    Par défaut

    Citation Envoyé par jacky01 Voir le message
    Quand le c# sera-t-il disponible en 5.0 ? est-il déjà en place sur VS2012 ?

    Je suis déjà amoureux du async/await
    Oui, il te faut le Framework 4.5.
    Si tu aimes bien async/await je te propose cette vidéo sur Channel 9 au Microsoft //build/ 2012.

  11. #11
    Membre habitué
    Homme Profil pro Jerome
    Développeur .NET
    Inscrit en
    octobre 2011
    Messages
    255
    Détails du profil
    Informations personnelles :
    Nom : Homme Jerome
    Localisation : France

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

    Informations forums :
    Inscription : octobre 2011
    Messages : 255
    Points : 146
    Points
    146

    Par défaut

    Petite vidéo des nouveauté du framework 4.5, c#5 et en français :

    http://channel9.msdn.com/Series/Tech...u-Framework-45

    async/await, Task, dataFlow ...

    Dans la vidéo on a droit a une petite démo sur l'utilisation de async/await.

    Moi aussi j'aime déja. Tres pratique et très puisant, le tout en gardant le controle sur le Thread UI (ou plutot du Thread appelant ) = c'est pas beau ça

    Par contre ca ne plaira pas au puriste car toute la mécanique est caché.
    Life myLife = new Life ("eat","sleep","code");

  12. #12
    Membre éprouvé Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    juin 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Âge : 27
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : juin 2007
    Messages : 532
    Points : 441
    Points
    441

    Par défaut

    Merci pour la vidéo
    je viens de la regarder et elle est vraiment claire.

    Au top !
    Je fais ce que je dis et je dis ce que je veux .

  13. #13
    Invité de passage
    Inscrit en
    octobre 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : octobre 2008
    Messages : 11
    Points : 4
    Points
    4

    Par défaut Boucle 123465

    Bonjour,

    Je vien de compiler et executer le code
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    static void Main(string[] args)
    {
        var values = new List<int>() { 1, 2, 3, 4, 5 };
        var funcs = new List<Func<int>>();
     
        foreach (var v in values)
        {
            funcs.Add(() => v * 10);
        }
     
        foreach (var f in funcs)
        {
            Console.WriteLine(f());
        }
    }

    Dans l'article est mentionné que si on utilise C# (.NET?!) 4.0 l'output serait "50 50 50 50 50".

    J'ai utilisé VS 2013 avec .NET 4.0 et l'output est "10 20 30 40 50". Avec .NET 4.5, c'est pareil.
    Par contre, si je compile et exécute ce code en VS 2010 avec le .NET 4, l'output est bien "50 50 50 50 50"...

    C'est quoi ce truc? Comment d'ailleurs savoir quelle version du C# (pas de .NET) on est en train d'utiliser?

  14. #14
    Membre Expert
    Avatar de Ph_Gr
    Homme Profil pro Philippe
    Développeur informatique
    Inscrit en
    novembre 2013
    Messages
    350
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe
    Localisation : France, Loire (Rhône Alpes)

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

    Informations forums :
    Inscription : novembre 2013
    Messages : 350
    Points : 1 002
    Points
    1 002

    Par défaut

    Bonjour serhhio,

    Il me semble que la version de C# est intrinsèquement lié à la version de Visual Studio utilisée. Car visual studio se sert d'un compilateur pour compiler le code C# en IL et c'est la version de ce compilateur dont il est question.

    Cela explique pourquoi on peut être en C# v5 mais avec un Framework.NET v4.0.

    J'ai trouvé juste un post de "stackoverflow" à ce sujet :
    http://stackoverflow.com/questions/2...-numbers-for-c

  15. #15
    Invité de passage
    Inscrit en
    octobre 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : octobre 2008
    Messages : 11
    Points : 4
    Points
    4

    Par défaut

    la vraiment liée à cette question sur So est la suivante:
    http://stackoverflow.com/q/22812388/185593

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •