Verwendung des Schlüsselworts "Using" in der C # -Schnittstelle

16

Wenn ich mit C # Code schreibe und mit Visual Studio 2010 eine Schnittstelle definiere, enthält diese immer eine Reihe von "using" -Anweisungen (wie im Beispiel gezeigt).

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

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

Ich frage mich, wofür diese sind und ob sie wirklich notwendig sind. Kann ich diese weglassen? Sind sie nur erforderlich, wenn ich diese Teile in meiner Schnittstellenbeschreibung verwende?

Onno
quelle
Danke für die Bearbeitung. Ich habe es gerade selbst herausgefunden. Irgendwie wurden die using-Anweisungen ausgelassen, obwohl ich sie im Codeblock ausgewählt hatte :)
Onno
2
Lesen Sie auch stackoverflow.com/a/151560/240613 : In Ihrem Code sind die Verwendungen an der falschen Stelle.
Arseni Mourzenko
1
Vielen Dank für den Link, es ist eine großartige Ergänzung. Nach der Antwort von @Akshat Jiwan Sharma wurde klar, dass dies tatsächlich der Fall ist, aber gleichzeitig bezieht sich die Frage auf die Standardvorlagen / -einstellungen, die von MS bei der Installation von VS2010 bereitgestellt wurden.
Onno
1
@MainMa - hier setzt Visual Studio usingsdie Standardvorlagen ein. Sofern Microsoft diese nicht bald aktualisiert, ist diese Frage gültig.
ChrisF
1
@Midhat: Stimmt, aber ich denke, es ist offensichtlich, was gefragt wird, wenn man die Frage selbst liest. Fühlen Sie sich frei, den Titel zu bearbeiten, wenn Sie sich einen besseren vorstellen können.
Onno

Antworten:

49

Visual Studio weiß nicht, welchen Code Sie schreiben möchten. Daher enthält die Vorlage "Neue Klasse" standardmäßig die für Sie am häufigsten verwendeten Namespaces. Auf diese Weise müssen Sie nicht alle Verweise für jede neue Codezeile auflösen, die Sie schreiben.

Sobald Sie Ihren Basiscode geschrieben haben und mit der rechten Maustaste auf "Organisieren"> "Entfernen und Sortieren" klicken , werden alle nicht verwendeten Codes gelöscht.

ChrisF
quelle
2
Wenn Sie versehentlich eine "using" -Zeile entfernen, können Sie sie wieder hinzufügen, indem Sie zu dem Klassennamen gehen, der jetzt nicht gefunden wird, und mit der rechten Maustaste auf -> Auflösen -> Verwenden ... klicken.
Mr Lister
10
@MrLister: Wenn Sie dies noch nicht wussten: Drücken Sie "Strg +". (Kontrollperiode), wenn sich Ihr Cursor auf einem nicht aufgelösten Typ oder einer Klasse befindet und Sie den gleichen Effekt erzielen, ohne jemals die Maus berühren zu müssen.
Steven Evers
3
Ebenfalls nur als Ergänzung zur Antwort: Nicht verwendete "Usings" haben keinen Einfluss auf die Laufzeit Ihres Codes, da nur die verwendeten "Usings" geladen werden. Sie können aber beeinflussen IDE und Kompilierung Geschwindigkeiten: stackoverflow.com/questions/136278/...
Holger
Da dies die akzeptierte Antwort ist, wollte ich erwähnen, dass StyleCop sich über falsche Referenzen beschwert und man auch eine Vorlage für eine neue Klasse und eine neue Schnittstelle usw. bearbeiten kann
Job
5

Ja, Sie können alle using-Direktiven entfernen, die nicht verwendet werden. Diese Direktiven werden von Visual Studio automatisch hinzugefügt, da sie am häufigsten verwendet werden. Wenn Sie beispielsweise in der Benutzeroberfläche kein linq verwenden, können Sie die Direktiven entfernen

 System.Linq;

Dies gilt auch für andere Direktiven. Auch ist es meiner Meinung nach eine gute Praxis, die using-Direktiven in Namespaces zu verschieben.

Akshat Jiwan Sharma
quelle
Die Frage, die Sie gestellt haben, hat mich auch lange Zeit verwirrt. :)
Akshat Jiwan Sharma
Man kann eine Vorlagendatei bearbeiten und anpassen, welche using-Anweisung eingeschlossen wird und wo - sie sollten standardmäßig in den Namespace eingefügt werden, da sich StyleCop sonst beschwert und noch schlimmer - schlimme Dinge passieren können.
Job
3

Diese Standardanweisungen usingsind Teil Ihrer Standardvorlage beim Erstellen von Schnittstellen. Sie können die Vorlage jederzeit bearbeiten, um sie entfernen zu lassen. Siehe diese Frage für weitere Details.

Bernard
quelle
Aber sind sie wirklich notwendig? Gibt es einen guten Grund, warum sie in der Vorlage enthalten sind?
Onno
Wenn Sie sie nicht benötigen, entfernen Sie sie einfach. Sie sind nur Standardeinstellungen.
Bernard
Sie sind nur erforderlich, wenn eine Ihrer Schnittstellenmethoden ein Rückgabetyp ist, der sich in einer von ihnen befindet. Sie benötigen mindestens System und die anderen nur nach Bedarf für Typen, die Sie zurückgeben möchten.
Graham
Tatsächlich brauchen viele Klassen kein System. Aber alles in allem macht es den meisten Entwicklern das Leben leichter, insbesondere denjenigen, die .NET nicht fürchterlich kennen und nicht wissen, wo sie die wichtigsten Systemklassen finden sollen.
Wyatt Barnett
0

Kurz gesagt , sie werden Namespaces genannt . Namespaces werden auch verwendet, um auf einige Bibliotheksklassen in Ihrem Code zu verweisen. Es gibt auch empfohlene Richtlinien zur Verwendung von Namespaces in .NET

In den meisten Fällen können Sie sie einfach entfernen, wenn sie nicht verwendet werden. Die folgenden zwei Namespaces sind potenzielle Kandidaten, die entfernt werden müssen.

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

Visual Studio wird sich beschweren und den Code NICHT kompilieren, sobald einige Framework- / Bibliotheksklassen verwendet wurden, ohne ihre Namespaces zu deklarieren. Daher spielt der Namespace eine wichtige Rolle bei der Strukturierung Ihres Codes sowie bei der Vereinfachung der Verweise zwischen den Projektklassen, Schnittstellen, Konstrukten usw.

Yusubov
quelle
-1

Verwendung in C # wird auf viele Arten verwendet. Als Wortschlüsselwort using bedeutet using .. beim Start, wenn wir using system verwendet haben. Das heißt, es gibt eine DLL mit dem Namen System, in der alle Hauptfunktionen gespeichert sind, und wir verwenden sie, um unseren Code zu verkürzen ...

system.WriteLine("Andy");

aber wenn wir das obige System benutzen, können wir es schreiben als

WriteLine("Andy");

Darüber hinaus bedeutet dies in SQL Server, dass die Verbindung selbst geschlossen wird, nachdem Daten aus der Datenbank mithilfe des Befehls connection verwendet wurden. Es ist sehr nützlich für einen Programmierer, der seine Zeit sparen möchte

andysmart001
quelle
1
Bitte versuchen Sie nicht, Ihren Antworten unnötige (und möglicherweise spammige) Links hinzuzufügen.
ChrisF