Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

A QUOI SERT LE MOT CLÉ USING


Information sur la source

Catégorie :.NET Source .NET ( DotNet ) Classé sous : namespace, using Niveau : Débutant Date de création : 17/09/2003 Date de mise à jour : 17/09/2003 13:41:14 Vu : 5 626

Note :
9 / 10 - par 3 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

Bonjour tout le monde ;-)

Je m'adresse là encore aux débutants, bienqu'il soit possible que les balèzes du C# ne se servent que "machinellement" de ce mot clé.

Qu'est-ce que "using"?

Vous aurez sûrement entendu parler des espaces de noms, ou en anglais namespaces, sans peut-être savoir ce qu'ils sont. Pour connaître l'utilité de using, il vous faudra cependant comprendre les espaces de noms.

Les espaces de noms n'est pas une nouveauté de C#. C++ et Java les utilisent déjà. On les utilisent en C++ avec l'instruction "#include" et en Java par "import". Je ne vais pas me casser la tête à expliquer ça. ;-)

Using est l'équivalent de #include et de import. L'exemple 1 démontre la manière la plus courante d'utiliser using. Cf. l'exemple n°1

C# comprend les deux écritures, celles de l'exemple n°1 et 2. Il n'est donc pas nécessaire d'utiliser toujours le mot using. Contrairement à C++ et à Java, si je ne m'abuse  ;-)

Ceci dit, using ne se limite pas à cette utilisation. Regardez le bout de code Exemple n°3. En temps normal, nous aurions tendance à appeler cette la "ClasseInterne" de la façon "Societe.Dept.Project.ClasseInterne". Avec C#, il est possible de créer un alias, permettant d'attribuer une sorte de "raccourci" à cette classe, de façon à ce que son nom soit plus parlant pour nous, et biensûr, beaucoup plus court que d'écrire toute la hiérarchie...
Voire l'Exemple n°4
 

Source

  • // Exemple n°1
  • using System;
  • Console.WriteLine("Hello World");
  • // Exemple n°2
  • System.Console.WriteLine("Hello World");
  • // Exemple n°3 (tiré d'un livre, donc pas de moi)
  • namespace Societe {
  • namespace Dept {
  • namespace Projet {
  • class ClasseInterne {
  • }
  • }
  • }
  • }
  • // Exemple n°4 (tiré d'un livre, donc pas de moi)
  • using NSI=Societe.Dept.Projet
  • NSI.ClasseInterne
  • // (au lieu de "Societe.Dept.Projet.ClasseInterne")
// Exemple n°1

    using System;
    Console.WriteLine("Hello World");






// Exemple n°2

    System.Console.WriteLine("Hello World");





// Exemple n°3 (tiré d'un livre, donc pas de moi)
namespace Societe {
    namespace Dept {
        namespace Projet {
            class ClasseInterne {
            }
        }
    }
}



// Exemple n°4 (tiré d'un livre, donc pas de moi)
using NSI=Societe.Dept.Projet
NSI.ClasseInterne

// (au lieu de "Societe.Dept.Projet.ClasseInterne")

Conclusion

Voilà, j'ai pris l'exemple seulement d'un bouquin. J'espère que cela vous sera utile, et j'attends vos commentaiers si nécessaire ;-)

Voilà, bonne prog à toutes et à tous!
 

Commentaires et avis

signaler à un administrateur
Commentaire de gg00xiv le 17/09/2003 20:37:08

La dernière formule est interessante pour les noms de namespace à ralonge.
Merci

signaler à un administrateur
Commentaire de malger le 11/10/2003 04:46:24

Je suis développeur Java et je débute en C#.
Si je comprends bien tes exemples, le terme "namespace" correspond donc à "package" en Java ?

signaler à un administrateur
Commentaire de Jujufouq le 11/10/2003 21:04:20

Salut. Pour te répondre : en quelque sorte oui. Cependant, dans un namespace, il peut y en avoir un autre qui en contient un troisième... et ainsi de suite. Comme son nom l'inqieu, c'est un espace de nom. Dedans, tu peux créer un objet avec ses méthodes , des propriétés etc... pour moi aussi c'était nouveau ce concept, mais c'est pas dur tu verras.  Bon travail ;-)

signaler à un administrateur
Commentaire de eLord le 20/10/2003 13:35:09

Bonjour Jujufouq,

je débute également en C#, mais ai qq. années d'expérience en C++.
Après vérification, je pense que ta comparaison avec C++ est un peu confuse, or ce mail s'adressant à des débutants, il est important à mon avis d'être clair.
Je vais essayer.

En C#, le "using" est équivalent au "using" du C++, et surtout pas au "include", qui lui est quasi-"automatique" en C#, du moins fait autrement !

Cette instruction a donc 2 utilisations :
- en tant qu'alias : cela correspond à tes exemples de code no3 et no4. Pour ma part, je considère cela comme un "scotch", une rustine pour masquer souvent des défauts de conception. Si ton nom de classe est trop long, change le ! Et si c'est une librairie externe sur laquelle tu n'as pas de contrôle, et bien au moins c'est identifiable. Sur ce dernier point, il faut penser à ceux qui arrivent derrière toi, et qui tombent sur un alias : où trouver sa signification ???....
- la deuxième signification du using, est la "directive", qui permet d'utiliser les classes d'un namespace, sans répéter le namespace à chaque fois ! Encore une fois, cela est à utiliser avec précaution : une trop forte utilisation du "using", peut masquer de nombreuses dépendances inter-namespaces (inter-modules) et donc un défaut de conception ! Par exemple, quand tu as trop souvent de namespace à écrire avant le nom de ta classe, c'est que ta classe n'est peut-être pas dans le bon namespace !....

Voila,
j'espère avoir clair ?!

J.

signaler à un administrateur
Commentaire de Jujufouq le 20/10/2003 21:59:24

Salut, à force je finis par le savoir! Oui, c'est un peu faux (beaucoup si vous préférez) pour le "using" comparé au "include". Je finis par être au courant.

Il est faux sur le point que "include" (inclure en français ;-) ) est remplacée en C++ par le contenu du fichier à inclure lors de la compilation. En effet, le using n'est pas remplacé par un fichier. Il annonce seulement que le programme va utiliser des classes du .net framework, en en permettant ainsi l'acces. C'est ce que tu appelles un scotch.

Pour l'alias, perso je travaille seul, et même si tu ne trouve pas ça pratique pour ceux qui reprennent le code derrière toi, deux solutions : tu change ton alias pour qu'il soit explicite, soit tu leur expliquent que il y a la définition au début de la source, au cas où ils ne le sauraient pas.   :-]

Dans tous les cas, que tu appelles ça du scotch ou ce que tu veux, cela n'empêche pas qu'il (using) puisse servir à créer des alias. Il a aussi été prévu pour cette fonction.

Voilà, "merci" quand même pour ton commentaire.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

erreur namespace???? [ par othland ] slt tlm,j'avais un code source que je voualis essayer!j'ai créer une application console (File-->New project-->Console application)puis j'a Word C# [ par pete87150 ] Bonjour,Je voudrais savoir comment ouvrir un document Word en C#, quelle référence ou directive utiliser etc.Voici mon code simplifié qui ne marche pa Erreur dont j'arrive pas a me débarrasser [ par patemino ] En C# avec #developusing System;using System.Windows.Forms;using System.IO;Dans une classe nommée repertoire :public class Répertoire {p Souci avec placeholder [ par MorpionMx ] Bonjour, J'ai un petit souci de placeholder qui n'affiche aucun controle.Pourtout, ca doit etre si simple, je me demande ce que je fais pas bien.J'ai communication entre 2 classes du meme namespace [ par Killan ] salut,ma demande est sur un procédé de communication entre 2 classes du meme namespace mais je ne comprend pasj'ai une form et dedan j'ai une textboxd Probléme de "Data". [ par TmDsbsBs ] Bonjour, j'ai un problème avec le "Data" (erreur : "Le type ou le nom d'espace de noms "Data" n'existe pas dans la classe ou l'espace de nim "System" Remplir DropDownList [ par TmDsbsBs ] Bonjour, c'est encore moi. Je suis peut-être un peu lourd à poser toujours les mêmes questions, mais je ne trouve pas de solutions et ca commence à de Problème de bouton [ par TmDsbsBs ] J'ai une liste déroute dans laquelle je choisis une ligne, et je valide par OK. Ensuite, j'ai une seconde liste déroulante ainsi qu'un nouveau bouton Multi threading using TCP and socket [ par gdupasqu ] Bonjour,je suis entrain d'écrire un programme (client et serveur).Le serveur fonctionne comme ceci: 1. Le serveur écoute sur un port fixé. 2. Lorsqu'u Multi Threading en utilisant TCP [ par gdupasqu ] Bonjour,je suis entrain d'écrire un programme (client et serveur).Le serveur fonctionne comme ceci:1. Le serveur écoute sur un port fixé.2. Lorsqu'un


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,499 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.