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. #21
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Citation Envoyé par Flaburgan Voir le message
    et je ne comprends pas cette ligne dans l'utilisation : SqlDbType leType = SqlDbType.Int;
    Il s'agit d'une énumération (enum).

    Il existe l'équivalent en Java depuis java 5.0.

    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 mieux est de lire la doc: http://msdn.microsoft.com/fr-fr/libr...(v=VS.90).aspx
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  2. #22
    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 compris ce qu'étaient les délégués, et je commence à assimiler l'utilisation de Linq. Merci à tous.
    Des dizaines de questions se précipitent cependant à chaque nouvelle manipulation ^^^^
    J'applique RTFM régulièrement, mais pas forcément facile de se retrouver dans le site MSDN
    Deux petites pour ce coup-ci donc :
    Est-il possible d'importer d'un seul coup plusieurs namespace ?
    en java, on peut faire par exemple pour avoir toutes les classes de java util. Là, j'ai un début de programme qui ressemble déjà à ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    using System;
    using System.Text;
    using System.Collections.Generic;
    using System.Linq;
    using System.Xml.Linq;
     
    using modelisation;
     
    namespace parseur
    {
    Alors que je n'ai pratiquement rien écrit. Je n'ose imaginer d'ici quelques semaines le résultat...

    En fait, y a-t-il un moyen de régler IntelliSense ou je ne sais quoi pour qu'il nous fasse les imports qu'il faut ??! Je ne supporte plus ce "The type or namespace name 'blablabla' could not be found (are you missing a using directive or an assembly reference?)" argh ! Mais importe le moi ce fichier dont tu as besoin !



    Deuxième question, quand on travaille sur des fichiers, où ceux-ci doivent-ils être placés ? Dans le dossier du projet, de la solution... ?
    Edit, j'ai trouvé, dans bin puis débug...

  3. #23
    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
    Pas d'import en large comme java de type System.*, mais ce n'est guère gênant. Si tu écris un élément non identifié, raccourci alt+maj+F10 sous VS ou cliquer sur le nom de l'objet inconnu permettra de référencer vite fait le namespace, faut pas avoir peur quoi... Les using ça va assez vite au début, mais on ne dépasse pas la douzaine, ou alors la classe fait vraiment fourre-tout... Exception pour ce qui est Winform/WPF, ou tu dépasse assez vite les 20 using, mais ça grossit pas plus que ça. A la longue les using tu n'y feras plus gaffe...

    En général dans le projet pour les documents, ça peut être dans des sous-répertoires attachés au projet, tout dépend de comment tu t'organises
    Tu peux dire que tel fichier peut être intégré dans la dll ou copié vers le répertoire de compilation...

  4. #24
    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 on continue avec les petites questions, déjà, gros doute, y a-t-il des destructeurs ? Ou un garbage collector, comme en java ? Comment tout cela fonctionne-t-il ?

    Ensuite, je suis tombé dans la doc sur des trucs du genre "accepte int, int?, long, long?". Kesecé que ces noms de type avec un ? derrière ? hein ? hein ? hein ?

    (curieuuuuuuuux!)

  5. #25
    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
    On a le garbage collector, il est possible de créer des destructeurs (technique peu usitée). Par contre les objets devant être nettoyés par le développeur implémente IDisposable (Comme les classes de Stream par exemple), il faut donc appeler Dispose quand tu n'as plus besoin de l'objet (ou le déclarer dans un blog using(){} qui appelle Dispose automatiquement, à ne pas confondre avec le using qui importe un namespace).

    Une des principales fuites de mémoire en .net, c'est abonner une méthode à un événement, que l'objet soit détruit sans retirer l'abonnement (donc pour chaque Add(+=), programme de suite le remove (-=)

    un ? signifie que la valeur peut être nulle, cela correspond à la classe Nullable<T>. On manipule ces membres avec les propriétés HasValue et Value. Cela ne s'applique aux types valeurs et non aux types références (définies comme étant un struct et non une classe. Exemple : bool, int, double, DateTime...)

  6. #26
    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 on retrouve nos deux questions quotidiennes.

    Niveau bonnes pratiques, est-ce que déclarer une classe en dehors d'un namespace est quel que chose de mal vue ou normale ?
    Dans quel namespace déclarez vous la classe "Application", celle qui contient le main ?

    Et niveau sauvegarde, comment sauvegarder vous le contexte d'utilisation du programme lors de sa fermeture ? Quelles sont les méthodes les plus rapides pour une solution du type sérialisation des objets et écriture dans un fichier ?

  7. #27
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Je te conseille de regarder les vidéos faites par Pascal Belaud (Microsoft): http://www.microsoft.com/france/visi...lt.aspx?chap=1

    Et de revenir avec des questions après. Sinon dans 3 ans on y est encore

    Déclarer une classe en dehors d'un espace de nom, ouai c'est mal vu
    Pour la classe Application, je ne sais pas si beaucoup de gens modifient le namespace créé par défaut quand on crée un nouveau projet avec Visual Studio.

    Pour la sauvegarde du contexte, ça dépend. Si c'est des données du type, préférences de l'utilisateur concernant l'application (les options en gros). Tu peux utiliser les settings (une des vidéos précédentes en explique le fonctionnement).
    S'il s'agit plus de données métiers, cela peut être une base de données ou un fichier XML par exemple.
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  8. #28
    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
    Euh, merci pour ton lien, mais quand je clique dessus, il me demande mon nom d'utilisateur et mon mot de passe... ??

    Edit : quand je l'ouvre dans un nouvel onglet, je peux quand même y accéder.

  9. #29
    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
    Salut à tous,
    Tout d'abord, bonne année

    Ensuite, et bien, j'ai déjà parcouru beaucoup de chemin depuis que j'ai créé ce topic :p

    J'ai découvert le MVVM et j'ai ainsi la joie de réussir à structurer mon appli pratiquement comme j'avais l'habitude de le faire en MVC tout en étant compatible WPF (et mine de rien, c'était pas une mince affaire, à la base).

    Seulement, d'après MVVM, il ne faut pas de code dans le code-behind. C'est aussi ce qui me semble le plus propre, mais je suis heurté à un problème, comment gérer les clics des utilisateurs facilement ?
    Avant, quand j'avais

    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    <MenuItem Header="Quitter" Click="fileExitMenuItem_Click"/>
    Il me suffisait d'écrire dans le code behind une méthode
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void fileExitMenuItem_Click(object sender, RoutedEventArgs e)
            {

    Mais si je veux déplacer cette méthode dans le ViewModel, oulala catastrophe, refus obstiné du compilateur...

  10. #30
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Il faut utiliser le concept de commandes (implémentation du pattern Command inclus dans WPF). Dans la classe MenuItem tu as une propriété Command que tu lie (bind) à une priopriété de type ICommand sur le ViewModel.

    On en parle ici: http://japf.developpez.com/tutoriels...stables/#LVI-D et sur le net (recherche sur Bing).
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  11. #31
    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 beaucoup ! Je ne suis pas encore très à l'aise avec les lambdas utilisés dans l'exemple, mais j'ai compris comment cela fonctionnait.

    Autre question, où traiter les erreurs de manière propre ? Par exemple, dans l'équivalent de mon controleur, j'ai une FileNotFoundException. Je fais une messagebox directement dedans, ou bien dois-je faire remonter cela jusqu'à la vue ? Ou bien créer une classe static spécifiquement pour ce genre de cas, avec une message box pour les erreurs, une pour les avertissements, une pour les aides...

    Et une dernière pour la route, j'aime poser mes questions par paire, j'ai vu qu'il était facile d'utiliser ObservableCollection<valeur>, mais j'aurais aimé avec une collection sous forme de dictionnaire, donc avec <clé,valeur>, je n'ai pas trouvé l'équivalent sur le msdn, quelqu'un sait si ça existe ou s'il faut que je réimplémente une collection de dictionnaire qui hériterait de INotifyCollectionChanged, INotifyPropertyChanged...
    (j'ai regardé ObservableCollection et aucune méthode n'a de corps, s'il suffit de rajouter les events et l'héritage, ce serait plus rapide que de parcourir le web à la recherche du graal..)

    Edit : J'ai trouvé quelqu'un qui avait déjà fait le boulot à ma place, et qui balance la source de son ObservableDictionnary, je vais tester ça.

  12. #32
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par Flaburgan Voir le message
    Merci beaucoup ! Je ne suis pas encore très à l'aise avec les lambdas utilisés dans l'exemple, mais j'ai compris comment cela fonctionnait.

    Autre question, où traiter les erreurs de manière propre ? Par exemple, dans l'équivalent de mon controleur, j'ai une FileNotFoundException. Je fais une messagebox directement dedans, ou bien dois-je faire remonter cela jusqu'à la vue ? Ou bien créer une classe static spécifiquement pour ce genre de cas, avec une message box pour les erreurs, une pour les avertissements, une pour les aides...

    Et une dernière pour la route, j'aime poser mes questions par paire, j'ai vu qu'il était facile d'utiliser ObservableCollection<valeur>, mais j'aurais aimé avec une collection sous forme de dictionnaire, donc avec <clé,valeur>, je n'ai pas trouvé l'équivalent sur le msdn, quelqu'un sait si ça existe ou s'il faut que je réimplémente une collection de dictionnaire qui hériterait de INotifyCollectionChanged, INotifyPropertyChanged...
    (j'ai regardé ObservableCollection et aucune méthode n'a de corps, s'il suffit de rajouter les events et l'héritage, ce serait plus rapide que de parcourir le web à la recherche du graal..)

    Edit : J'ai trouvé quelqu'un qui avait déjà fait le boulot à ma place, et qui balance la source de son ObservableDictionnary, je vais tester ça.
    Tu peux utiliser sinon le ObservableCollection<Tuple<T1,T2>>, sauf qu'il n'y a pas unicité des clefs.

  13. #33
    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 pris la classe créée ObservableDictionnary.
    Le problème est que quand je l'affiche dans ma treeview, je me retrouve avec des couples clés valeurs sous cette forme : [maClé.ToString(), value.ToString()], c'est aussi ce que je récupére (enfin je crois, vu que je suis obligé de faire un toString) quand je fais SelectItem sur ma treeview. Or moi je voudrais juste récupérer (et afficher) value. Je suppose donc que mon ObservableDictionary ne sert à rien, et que je n'ai qu'à avoir un dictionnaire en interne que je convertis (je ne sais comment) en ObservableCollection, et c'est elle que je donne à la treeview ?

  14. #34
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par Flaburgan Voir le message
    J'ai pris la classe créée ObservableDictionnary.
    Le problème est que quand je l'affiche dans ma treeview, je me retrouve avec des couples clés valeurs sous cette forme : [maClé.ToString(), value.ToString()], c'est aussi ce que je récupére (enfin je crois, vu que je suis obligé de faire un toString) quand je fais SelectItem sur ma treeview. Or moi je voudrais juste récupérer (et afficher) value. Je suppose donc que mon ObservableDictionary ne sert à rien, et que je n'ai qu'à avoir un dictionnaire en interne que je convertis (je ne sais comment) en ObservableCollection, et c'est elle que je donne à la treeview ?
    Il faut plutot modifier le ItemTemplate du treeview pour qu'il affiche le bon champs!

  15. #35
    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
    Je ne sais pas faire ça Je vais essayer de regarder

    Edit : Du coup, j'ai fait une liste simple, enfin j'me suis débrouillé quoi ^^
    Et pour les messages d'erreur alors ?

  16. #36
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    J'ajouterai un petit truc sur les using si la place qu'ils prennent te gène :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #region Références
    using System;
    using System.Data;
    using System.Data.SqlClient;
    ....
    #endregion
    Ca construit une région repliable histoire d'organiser un peu plus ton code.

    C'est une syntaxe proche du préprocesseur de C/C++ (mais attention, c'est pas parce que ca y ressemble qu'il s'agit vraiment d'un préprocesseur C/C++).

    Il faut savoir que le .Net et le C# en particulier sont fortement liés à Visual Studio.
    Le code que tu tapes peut influer directement sur l'IDE.

    Par exemple, tu peux poser des attributs sur tes classes et propriétés :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class MonControl : System.Windows.Forms.UserControl
    {
        public string UnePropriete { get; set;}
     
        [Browsable(false)]
        public string UneAutrePropriete { get; set; }
    }

    Avec ce code, la propriété "UnePropriete" sera visible et affectable dans le Designer de Visual Studio.
    Par contre, la propriété "UneAutrePropriete" n'apparaitra pas dans la grille de propriétés du Designer. Son comportement en terme de programmation reste inchangé.

  17. #37
    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
    je n'avais pas pensé à enfermer les using dans une région effectivement ! Merci bien !

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

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, 19h27
  2. [Apprentissage] Passage de Java à C#
    Par TomZ dans le forum C#
    Réponses: 3
    Dernier message: 15/10/2010, 22h08
  3. Réponses: 14
    Dernier message: 24/08/2010, 02h47
  4. [Débutant] Passage de Java a C++
    Par GyZmoO dans le forum C++
    Réponses: 9
    Dernier message: 10/10/2007, 02h18
  5. [migration] Passage à Java 5
    Par LaJavanaise dans le forum Langage
    Réponses: 3
    Dernier message: 26/04/2006, 12h19

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