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 :

Passage de Java à C#


Sujet :

C#

  1. #1
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut Passage de Java à C#
    Bonjour à tous,
    Je suis développeur Java, mais la boite dans laquelle je viens d'être embauché souhaite que je développe en C#. Je souhaitais donc savoir s'il existait sur ce forum un topic résumant les principales différences entre ces deux langages à la fois très proche syntaxiquement et qui pourtant amène des différences lors du développement. Si ce n'est pas le cas, est ce que quelqu'un connaissant un minimum C# pourrait me dire quelques mots sur les subtilités qu'il apporte par rapport à Java ? Les trucs en plus, les principales différences, les pièges dans lesquels on tombe au début... ? Je demande ça car si quelqu'un prend une demi heure pour m'expliquer ça, ça peut me faire économiser de nombreuses heures à chercher sur le web.
    Pour commencer, existe-t-il l'équivalent en C# de notre serializable ?

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    Salut,

    Avant de commencer à faire un comparaison longue, il faudrait nous indiquer quelle version du framework tu va utiliser, car entre 1.1, 2, 3, 3.5 et 4 il y a eut de nombreux changements (un peu comme si tu comparais java 1.4 à java 6).

  3. #3
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    La 4 n'est pas encore déployée de ce que j'ai compris, on est encore à la 3.5.
    Sinon, je vais être amené à utiliser WPF, et j'ai trouvé notamment une "nouveauté", WPF Ribbon qui permet d'inclure facilement le bandeau des "nouvelles" suites microsoft dans l'interface graphique. Je dois aussi parser du XML, et j'ai cru comprendre que LinQ pourrait m'aider, même si je ne sais pas encore ce que c'est...

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    Donc c'est la 3.5

    bon, sur les opérations 'simples' (if, switch, affectation), tout ce qui marche en java marche en .net, ou presque (pour moi il manque juste le throw de signature de méthode qui manque). A part ça je pense que tu trouveras toujours une soution 'propre' de faire l'équivalent en .net

    Pour la partie ihm, tu as du microsoft donc c'est pour faire tu microsoft. Wpf se présentes sous la forme d'un fichier xaml de présentation et d'un fichier cs de code, (l'equivalent java serai le fichier jsp et sa servlet). Je ne peux pas t'en dire plus car je ne fait que du web.


    Enfin pour Link, je ne crois qu'il existe pour l'instant d'équivalent en java, cela te permet en gros d'effectuer des filtres, des jointures, des aggrégations sur listes d'objets (donc en gros toutes les opérations simples de base de données) directment sur des objets, fichiers xml, bases de données, dans ton cas cela te permettrai de faire tes filtres sur tes fichiers xml.

    Pour ton serializable, je ne sais plus ce que cela fait en java, en .net il y a l'interface iserializable qui te permet de serializer/deserialiser une classe:
    http://tlevesque.developpez.com/dotn...serialization/

    Voila, faire une comparaison exhaustive risquerai d'ètre tres long, je te suggères donc de poser directment les questions sur ton besoin.

    Bonne chance.

  5. #5
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    D'accord, merci pour ton point de vue

    Pour le serialize, je m'en servais particulièrement pour enregistrer directement les objets dans des fichiers, pour faire une sauvegarde des données tout simplement. Cela permet, si tu as créé un objet voiture, de pouvoir enregistrer et donc récupérer directement ton objet voiture lorsque tu vas relancer l'application, sans enregistrer toutes les valeurs des attributs séparément.

  6. #6
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Bienvenue dans le monde merveilleux de DotNet

    Je pense que la meilleure manière d'appréhender ton passage sur dotnet est de commencer par des tutos de ce type, ainsi tu passeras en revue les features de base de c#.

  7. #7
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    J'ai en effet commencé à le lire. Comme il est très long (457 pages quand même ) et qu'effectivement les structures sont très proches de Java, j'ai tout de même posté ce topic, pour savoir s'il y avait des différences majeures sur certains points, ou des pièges classiques (pour l'instant, le coup des majuscules au début des méthodes ).

  8. #8
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Si la syntaxe ne te pose pas de problème, je pense dans ce cas qu'il faut que tu mettes les mains dans le framework pour commencer à te familiariser avec les classes qui le composent.

    Je ne pourrais pas t'en dire plus sur les différences java/c#, je ne connais plus assez Java.

  9. #9
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    ce que j'aimerais savoir, c'est s'il y a des spécificités intéressantes souvent utilisées et qui n'existe pas ailleurs. J'ai entendu parlé de delegate par exemple, mais je n'ai pas bien compris ce que c'était.

    Et sinon, c'est plus des questions de bonnes pratiques : comment bien gérer les namespace, à quel moment je dois en créer un autre par exemple ?

  10. #10
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    Re,

    Pour les namespace, c'est la meme chose qu'en java (package je crois). Comment les gérer, rien de plus simple, ton namespace racine est défini, tu créé un dossier 'toto', et une classe 'titi' dedans, il te mettra automatiquement comme namespace : racine.'toto' (comme en java).

    En termes de possibilités sympathiques qui n'existent pas forcément en java:
    l'intelisense
    construction d'une ihm via xaml
    evenement de tes boutons liés à des méthodes
    linq (qui reprend les delagate)
    les propriété auto-implémentés
    les méthodes d'extentions
    les webservices rendus simples d'utilisations
    les dataset typés
    les enums si tu faisais du java 1.4
    la réflexion
    codedom (pour les maso)
    etc


    Pour en revenir à ta sérialisation, je te conseille de lire le lien que j'ai mis, pour serialiser/déserialiser un objet.

    En termes de best practices différentes, je n'ai pas assez fait de java pour ètre pertinent.

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Par défaut
    Bonjour

    Juste une petit mot sur mon expérience qui le contraire de la tienne ( passage du .net C# au java)

    Mes plus gros problèmes ont été que le java n'a pas de type unsigned qui est critique pour le byte, donc dans le sens java -> c# pas de problème.

    Ne pas avoir de delegate en java (pointer sur une fonction) qui peut se remplacer en java avec des classes interfaces et implémenter la fonction que l'on veut pointer.

    la boucle switch java qui n'accepte pas les string donc obliger de faire des énumération pour s'en sortir.

    A mon sens le passage Java -> C# me semble plus aisé.

    Cordialement

  12. #12
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Flaburgan Voir le message
    ce que j'aimerais savoir, c'est s'il y a des spécificités intéressantes souvent utilisées et qui n'existe pas ailleurs. J'ai entendu parlé de delegate par exemple, mais je n'ai pas bien compris ce que c'était.
    Pour faire simple, les delegate sont la version POO des pointeurs de fonctions du C. Je crois qu'il n'y a pas d'équivalent Java(du moins à ma connaissance, mais comme je ne fais plus de Java depuis .... de longues années, c'est à prendre avec des pincettes).

    Et sinon, c'est plus des questions de bonnes pratiques : comment bien gérer les namespace, à quel moment je dois en créer un autre par exemple ?
    Il y a de ce coté une différence très importante entre les Namespace de C# et les package de Java : le C# n'impose aucun couplage entre les noms des fichiers de classe et les noms de classes , les noms des namespaces et l'organisation des répertoires; bref, il y a un découplage complet entre l'organisation logique de ton espace de noms et son organisaton physique En effet, même si l'IDE (Visual Studio) te propose par défaut un couplage entre organisation logique et organisation physique assez proche de celui de Java (nom de classe = nom du fichier de la classe), ce n'est en aucun cas une obligation ni du langage ni de l'environnement d'exécution.

  13. #13
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    • Tes Getter/Setter deviennent des propriétés, ça peut perturber un peu mais ça allège vite le code
    • Les règles de présentation (majuscule/minuscule) varient un peu mais on s'y fait assez vite.
    • Penche toi sur Linq, comme dit précédemment c'est un ensemble de fonctions de traitement de collections vraiment puissantes
    • Pour le wpf, c'es-t vraiment un level au dessus, vois déjà pour une bonne connaissance des éléments de base du framework
    • La gestion des threads est complètement différente en .Net. Pas d'interface à implémenter. Tu crées ton thread, tu pointes la méthode à exécuter et hop. Pour un traitement répétitif selon une fréquence X, regarde les timers.
    • Prends le temps de découvrir le système de base


    Ca fait déjà un petite base

  14. #14
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    Et y a-t-il un équivalent à la javadoc ? Des commentaires pour une documentation qui doivent suivre un coding style ? Doxygen peut être ?

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Par défaut
    Bonjour

    Tu peux mettre en commande de compilation une demande de commentaire obligatoire pour chaque fonction et variable public.

    pour mettre le commentaire avant la definition de la function ou variable tu ajout e /// et le prototype de commentaire xml apparait

    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    /// <summary>
            /// Method to control switch board through RS485
            /// </summary>
            /// <param name="bSet">Set or clear relay</param>
            /// <param name="RelaisNumber">relais number to control (1 to 8) ; 9 for all</param>
            /// <param name="ResetAllBeforSet">if true clear all Relay befor set one.</param>
            public void SendSwitchCommand(bool bSet, byte RelaisNumber, bool ResetAllBeforSet)
    il ne te reste plus qu'a entrer tes infos perso.
    Ces infos seront dans l'EDI visual studio avec l'intellisence quand tu appel la fonction par contre il n y a pas de génération de fichier doc directement.
    Des outils existent mais je n'ai pas trouvé de chose complètement automatique.

    Codialement

  16. #16
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    Merci bien! Et puisqu'on en parle c'quoi ce IntelliSense ? Il me semblait que c'était simplement l'auto-complétion, mais ça a l'air d'englober plus de trucs que ça ?

    (ya tant de choses à apprendre, je sautille de partout :p)

  17. #17
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Flaburgan Voir le message
    Merci bien! Et puisqu'on en parle c'quoi ce IntelliSense ? Il me semblait que c'était simplement l'auto-complétion, mais ça a l'air d'englober plus de trucs que ça ?

    (ya tant de choses à apprendre, je sautille de partout :p)
    Le mieux plutôt qu'une longue description est d'aller à la source :

    http://msdn.microsoft.com/en-us/libr...v=VS.100).aspx

    Et y'a même une (petite) page wiki sur le sujet :

    http://en.wikipedia.org/wiki/IntelliSense

  18. #18
    Membre éclairé
    Avatar de Sieldev
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 259
    Par défaut
    Salut et bienvenu dans le monde .NET

    Pas mal de choses ont été dites dans le topic, je vais en reprendre quelques unes et t'en donner un échantillon.

    Pour ce qui est des accesseurs et des mutateurs, en Java par convention on préfixe une méthode par Get ou Set:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // Accesseurs et mutateurs
    public int GetIdClient() {
        return this.idClient;
    }
     
    public void SetIdClient(int id){
        this.idClient = id;
    }
    En C# tu peux faire la même chose ou définir des propriétés. En fait les getter et setter ont été standardisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Accesseurs et mutateurs
    public string IdClient
    {
        get { return this.idClient; }
        set { this.IdClient = value; }
    }
     
    // En utilisation ça donne:
    Client unClient = new Client();
     
    int id = unClient.IdClient; // Appel la propriété get
    unClient.IdClient = 5; // Appel la propriété set
    Tu retrouveras également des indexeurs, ils te permettront de parcourir un attribut de ta classe de type Collection ou Tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    // On suppose qu'il existe un attribut lesCommandes dans la classe Client
     
    // Indexeur par l'index
    public Commande this[int poste]
    {
        get
        {
            Commande commandeCourante = this.lesCommandes[poste] as Commande;
            return commandeCourante;
        } 
     
    // Indexeur par le nom
    public Commande this[string nom]
    {
        get
        {
            int valRetour = -1;
            Commande commandeCourante = null;
     
            for (int i = 0; i < Colonnes.Count; i++)
            {
                commandeCourante = this.lesCommandes[i] as Commande;
     
                if (commandeCourante.Nom == Nom)
                {
                    valRetour = i;
                }
            }
     
            return valRetour;
        }
    }
     
    // Utilisation
     public SqlDbType RecupererTypeSql(string nom)
    {
        int i = 0;
        SqlDbType leType = SqlDbType.Int;
     
        for (i = 0; i < this.lesCommandes.Count; i++)
        {
            if (this[i].Nom == nom)
            {
                leType = this[i].TypeSQL;
            }
        }
     
        return leType;
    } 
    }
    Pour ce qui est de LINQ, comme il a été mentionné plus haut, c'est un langage qui permet de requêter un grand nombre de source de données.
    Il existe: LINQ To SQL, LINQ To Objects, LINQ To XML, LINQ To Entity, LINQ To Sharepoint

    Je trouve LINQ très puissant, en effet avec LINQ To Objects on peut interroger tous les types d'objets implémentant IEnumerable. De plus la syntaxe est inspirée de SQL.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     var query = from Commande cmd in lesCommandes
                            where cmd.Total > 5000
                            order by cmd.Nom
                            select cmd;
    Par itération cela aurait pris beaucoup plus de lignes de code.
    Je te conseille de faire des recherches sur le mot clé "var", il est très intéressant .

    Je t'ai décrit une partie très infime de ce que peut offrir le C#, il te reste encore énormément de choses à découvrir, et c'est encore le cas pour moi aussi

    Pour ce qui est de la documentation, la MSDN est la référence.
    Tu y trouveras la description d'absolument tout le Framework .NET dans toutes ses versions, avec des exemples de code dans differents langages .NET, des articles, des livres blanc etc... le tout traduit en plusieurs dizaines de langues.
    Par contre la fonction recherche de la MSDN n'est pas terrible. Ce que je te conseille c'est de taper sur Google "msdn" suivie de ce que tu recherches.

    Enfin, apprend à utiliser Visual Studio, pour moi il est l'un des IDE les plus puissant. Son mode débuggage est une pure merveille.
    J'ai eu l'occasion de tester Code::Blocks, Eclispe et Netbeans (certes pas aussi longtemps que Visual Studio) et je n'ai pas retrouvé les sensations éprouvées sur Visual Studio.

  19. #19
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    Bonjour à vous deux, et merci.
    J'ai en effet trouvé le site msdn dans le temps écoulé depuis mon précédent message. Une mine d'information. Je regrette qu'il n'y ait pas l'équivalent en français pour Java !

    Concernant les propriétés, je pense avoir saisi. Pour linQ, j'ai pu observer quelques exemples dans MSDN, je vais pour l'instant m'en servir de parser XML, on verra bien si je m'en sors quand je m'y mettrais, je fais de la spécif pour l'instant.

    J'ai un peu plus de mal avec les indexeurs (orthographe ?o_O), deux choses me gène : La déclaration : public Commande this[int poste]
    Pourquoi ce nom de this, si je veux faire un autre indexeur dans la classe client mais sur les adresses par exemple, puis-je écrire public Adresse this[int i] ? Ou bien le type retourné ne suffit pas pour définir une nouvelle signature ? Comment les distinguer après coup dans le code ?

    et je ne comprends pas cette ligne dans l'utilisation : SqlDbType leType = SqlDbType.Int;


    Autre chose, j'ai croisé des paramètres out en C#, je connais à peu près le concept car j'ai fait de l'ADA, l'implémentation est la même en C# ? Un paramètre sans rien d'indiqué par défaut est de type in ? ou in out ?

  20. #20
    Membre éclairé
    Avatar de Sieldev
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 259
    Par défaut
    Citation Envoyé par Flaburgan Voir le message
    J'ai un peu plus de mal avec les indexeurs (orthographe ?o_O), deux choses me gène : La déclaration : public Commande this[int poste]
    Pourquoi ce nom de this, si je veux faire un autre indexeur dans la classe client mais sur les adresses par exemple, puis-je écrire public Adresse this[int i] ? Ou bien le type retourné ne suffit pas pour définir une nouvelle signature ? Comment les distinguer après coup dans le code ?
    Effectivement tu ne peux définir qu'un indexeur par classe. Le mot clé "this" comme en Java représente l'objet courant.
    La chose que tu peux faire, comme je l'ai fais dans l'exemple, c'est de surchargé ton indexeur, mais ca concerne la même collection.

    Toutefois ! Il existe une ruse pour avoir plusieurs indexeurs par classe pointant sur des collections différentes.
    Je te renvoie à un article d'un membre du club pour découvrir l'astuce :
    - http://blog.developpez.com/index.php...s_une_classe_c


    Citation Envoyé par Flaburgan Voir le message
    et je ne comprends pas cette ligne dans l'utilisation : SqlDbType leType = SqlDbType.Int;
    Ici je fais appel à un Enumerateur de System.Data.SqlDbType.
    En C# tu peux définir tes propres énumérateurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public enum Couleur
    {
        Rouge,
        Vert,
        Bleu,
        Indigo,
        Cyan,
    }
     
    // Utilisation
    Couleur.Bleu;

    Citation Envoyé par Flaburgan Voir le message
    Autre chose, j'ai croisé des paramètres out en C#, je connais à peu près le concept car j'ai fait de l'ADA, l'implémentation est la même en C# ? Un paramètre sans rien d'indiqué par défaut est de type in ? ou in out ?
    Le mot clé "out" te permet de passer des paramétres à une fonction par référence, ça ressemble aux pointeurs en C. De cette manière ta fonction peut "renvoyer" plusieurs valeurs. Un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    static void Main(string[] args)
    {
        ...
     
        int leChiffre = 5;
     
        Console.WriteLine(leChiffre); // Le chiffre vaut 5
     
        bool estModifie = unClient.ModifierChiffre(out unChiffre);
     
        Console.WriteLine(leChiffre); // Le chiffre vaut 20
     
        ...
    }   
     
    public bool ModifierChiffre(out int unChiffre)
    {
        unChiffre = 20; 
     
        return true;
    }
    Il existe également le mot clé "ref" qui fait exactement la même chose sauf que tu dois au préalable initialiser ta variable. Avec "out" tu n'es pas obligé de le faire.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Débutant] Passage de Java à C# : les Bibliothèques
    Par Chycken dans le forum C#
    Réponses: 9
    Dernier message: 22/10/2011, 18h27
  2. [Apprentissage] Passage de Java à C#
    Par TomZ dans le forum C#
    Réponses: 3
    Dernier message: 15/10/2010, 21h08
  3. Réponses: 14
    Dernier message: 24/08/2010, 01h47
  4. [Débutant] Passage de Java a C++
    Par GyZmoO dans le forum C++
    Réponses: 9
    Dernier message: 10/10/2007, 01h18
  5. [migration] Passage à Java 5
    Par LaJavanaise dans le forum Langage
    Réponses: 3
    Dernier message: 26/04/2006, 11h19

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