Utilisation du mot clé "Using" dans l'interface C #


16

Lorsque j'utilise C # pour écrire du code et que je définis une interface à l'aide de Visual Studio 2010, il comprend toujours un certain nombre d'instructions «using» (comme indiqué dans l'exemple)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestEngine.TestNameSpace
{
    interface ITest1
    {
        bool testMethod(int xyz);
    }
} 

Je me demande à quoi elles servent et si elles sont vraiment nécessaires. Puis-je les laisser de côté? Sont-ils nécessaires uniquement lorsque j'utilise ces pièces dans ma description d'interface?


thnx pour l'édition. Je viens de le découvrir moi-même. en quelque sorte les déclarations à l' aide ont été laissés même si je les avais choisis dans le bloc de code :)
Onno

2
Lisez également stackoverflow.com/a/151560/240613 : dans votre code, les utilisations sont au mauvais endroit.
Arseni Mourzenko

1
Thnx pour le lien, c'est un excellent ajout. Après la réponse de @Akshat Jiwan Sharma, il est devenu clair que c'est effectivement le cas, mais en même temps, la question concerne le modèle / les paramètres par défaut fournis par MS lorsque vous installez VS2010.
Onno

1
@MainMa - c'est là que Visual Studio place le usingsdans les modèles par défaut, donc à moins que Microsoft ne les mette à jour très bientôt, cette question est valide.
ChrisF

1
@Midhat: C'est vrai, mais je pense que c'est évident ce qui est demandé quand on lit la question elle-même. N'hésitez pas à modifier le titre si vous pouvez en trouver un meilleur.
Onno

Réponses:


49

Visual Studio ne sait pas quel code vous avez l'intention d'écrire et inclut par défaut les espaces de noms les plus courants pour vous dans le modèle "nouvelle classe". Ceci est fait pour que vous n'ayez pas à résoudre toutes les références pour chaque ligne de nouveau code que vous écrivez.

Une fois que vous avez écrit votre code de base si vous faites un clic droit et sélectionnez Organiser les utilisations> Supprimer et trier, il supprimera tous ceux qui ne sont pas utilisés.


2
De plus, si vous supprimez une ligne "using" par erreur, vous pouvez les rajouter en accédant au nom de la classe qui ne peut plus être trouvé et en cliquant avec le bouton droit -> Resolve -> Using ...
Mr Lister

10
@MrLister: Si vous ne le saviez pas déjà: appuyez sur "ctrl +". (période de contrôle) lorsque votre curseur se trouve sur n'importe quel type ou classe non résolu et que vous obtenez le même effet sans jamais avoir à toucher la souris.
Steven Evers

3
Aussi juste comme un ajout à la réponse: les "usages" inutilisés n'affecteront pas le temps d'exécution de votre code, car seuls les "usings" utilisés seront chargés. Ils peuvent cependant affecter l'IDE et les vitesses de compilation: stackoverflow.com/questions/136278/…
Holger

Puisque c'est la réponse acceptée, je voulais mentionner que StyleCop se plaindra du fait que les références sont au mauvais endroit et que l'on peut également modifier un modèle pour une nouvelle classe et une nouvelle interface, etc.
Job

5

Oui, vous pouvez supprimer toute directive using qui n'est pas utilisée.Ces directives sont automatiquement ajoutées par Visual Studio car ce sont les plus couramment utilisées et si, par exemple, vous n'utilisez pas linq dans l'interface, vous pouvez supprimer la directive

 System.Linq;

Il en va de même pour les autres directives. Il est également, à mon avis, une bonne pratique de déplacer les directives using dans les espaces de noms.


Heureux d'aider la question que vous m'avez posée aussi longtemps. :)
Akshat Jiwan Sharma

On peut éditer un fichier de modèle et ajuster quelle instruction using est incluse et où - ils devraient aller à l'intérieur de l'espace de noms par défaut, sinon StyleCop se plaindra, et pire encore - de mauvaises choses peuvent se produire.
Job

3

Ces usinginstructions par défaut font partie de votre modèle par défaut lors de la création d'interfaces. Vous pouvez toujours modifier le modèle pour les supprimer. Voir cette question pour plus de détails.


Mais sont-ils vraiment nécessaires? Y a-t-il une bonne raison pour qu'ils soient dans le modèle?
Onno

Si vous n'en avez pas besoin, supprimez-les simplement. Ce ne sont que des valeurs par défaut.
Bernard

Ils ne sont nécessaires que si l'une de vos méthodes d'interface est un type de retour situé dans l'une d'elles. Vous avez besoin du système au minimum, et les autres uniquement selon les besoins pour les types que vous souhaitez retourner.
Graham

En fait, de nombreuses classes n'ont pas besoin de système. Mais dans l'ensemble, cela facilite la vie de la plupart des développeurs, en particulier ceux qui ne sont pas horriblement habitués à .NET et qui ne savent pas où choisir les principales classes système.
Wyatt Barnett

0

En bref , ils sont appelés espaces de noms . Les espaces de noms sont également utilisés pour référencer certaines classes de bibliothèque dans votre code. Il existe également des recommandations sur l'utilisation des espaces de noms dans .NET

Dans la plupart des cas, vous pouvez simplement les supprimer s'ils ne sont pas utilisés. Les deux espaces de noms suivants sont des candidats potentiels à supprimer.

using System.Collections.Generic;
using System.Linq;

Visual Studio se plaindra et ne compilera PAS le code, une fois que certaines classes de framework / bibliothèque ont été utilisées sans déclarer leurs espaces de noms. Ainsi, l'espace de noms joue un rôle de structuration de votre code et facilite les références entre les classes de projet, les interfaces, les constructions, etc.


-1

utiliser en C # utilisé de plusieurs façons .. comme mot clé en utilisant signifie utiliser .. au démarrage lorsque nous avons utilisé le système; cela signifie qu'il existe une DLL de nom System dans laquelle toutes les fonctions principales sont stockées et nous l'utilisons pour raccourcir notre code ...

system.WriteLine("Andy");

mais lorsque nous utilisons le système ci-dessus, nous pouvons l'écrire comme

WriteLine("Andy");

plus dans SQLserver lorsque nous utilisons la connexion, cela signifie qu'après avoir utilisé les données de la base de données à l'aide de la commande, la connexion se fermera. c'est très utile pour un codeur qui veut gagner du temps


1
N'essayez pas d'ajouter des liens inutiles (et potentiellement spam) à vos réponses.
ChrisF
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.