C#-IntelliSense

C# IntelliSense ist eine sprachspezifische Hilfe zur Code-Vervollständigung. Es steht Ihnen zur Verfügung, wenn Sie C#-Code im Code-Editor schreiben und im Befehlsfenster für den Direktmodus debuggen.

Vervollständigungslisten

Die IntelliSense-Vervollständigungslisten in C# enthalten u.a. Token von „Member auflisten“ und „Wort vervollständigen“. Die Listen ermöglichen schnellen Zugriff auf:

  • Member eines Typs oder Namespaces

  • Variablen-, Befehls- und Funktionsnamen

  • Codeausschnitte

  • Sprachschlüsselwörter

  • Erweiterungsmethoden

Die Vervollständigungslisten in C# filtern irrelevante Token heraus und treffen eine Vorauswahl von Token basierend auf dem Kontext. Weitere Informationen finden Sie unter Gefilterte Vervollständigungslisten.

Codeausschnitte in Vervollständigungslisten

In C# enthält die Vervollständigungsliste Codeausschnitte, um Ihnen das einfache Einfügen vordefinierter Codetexte in das Programm zu ermöglichen. Codeausschnitte werden in der Vervollständigungsliste als Verknüpfungstext des Ausschnitts angezeigt. Weitere Informationen über standardmäßig in C# verfügbare Codeausschnitte finden Sie unter C#-Codeausschnitte.

Sprachschlüsselwörter in Vervollständigungslisten

Die Vervollständigungsliste enthält Schlüsselwörter der Sprache C#, die Ihnen helfen, sie in Ihr Programm einzufügen. Weitere Informationen über Sprachschlüsselwörter in C# finden Sie unter C#-Schlüsselwörter.

Erweiterungsmethoden in Vervollständigungslisten

In C# enthält die Vervollständigungsliste Erweiterungsmethoden innerhalb des jeweiligen Gültigkeitsbereichs.

Für Erweiterungsmethoden wird ein anderes Symbol als für Instanzenmethoden verwendet. Wenn sich eine Instanzenmethode und eine Erweiterungsmethode mit identischem Namen im selben Bereich befinden, zeigt die Vervollständigungsliste das Symbol für die Erweiterungsmethode an.

Hinweis

Bei String-Objekten werden in der Vervollständigungsliste nicht alle Erweiterungsmethoden angezeigt.

Gefilterte Vervollständigungslisten

Unnötige Member werden von IntelliSense mithilfe von Filtern aus der Vervollständigungsliste entfernt. In C# werden die Vervollständigungslisten für folgende Elemente gefiltert:

  • Schnittstellen und Basisklassen: IntelliSense entfernt automatisch unnötige Elemente aus den Vervollständigungslisten für Schnittstellen und Basisklassen. Diese Entfernung umfasst Klassendeklarationsbasen sowie Schnittstellen- und Beschränkungslisten. So werden Enumerationen in der Vervollständigungsliste für Basisklassen beispielsweise nicht angezeigt, da Enumerationen für Basisklassen nicht verwendet werden können. Die Vervollständigungsliste für Basisklassen enthält nur Schnittstellen und Namespaces. Wenn Sie ein Element in der Liste auswählen und dann eine Kommataste eingeben, entfernt IntelliSense die Basisklassen aus der Vervollständigungsliste. Dies geschieht, da C# nicht Mehrfachvererbungen unterstützt. Das gleiche Verhalten gilt auch für Einschränkungsklauseln.

  • Attribute: Beim Anwenden eines Attributs auf einen Typ wird die Vervollständigungsliste gefiltert, sodass sie nur die Typen enthält, die von den Namespaces abgeleitet werden, in denen diese Typen enthalten sind. Beispiel: Attribute.

  • Catch-Klauseln: In der Abschlussliste werden nur gültige Try-Catch-Schlüsselwörter angezeigt.

  • Objektinitialisierer: Nur Members, die initialisiert werden können, werden in der Vervollständigungsliste angezeigt.

  • Neues Schlüsselwort: Wenn Sie new eingeben und dann die Leertaste drücken, wird eine Vervollständigungsliste angezeigt. IntelliSense wählt automatisch ein Element in der Liste aus, basierend auf dem Kontext in Ihrem Code. IntelliSense wählt zum Beispiel automatisch Elemente in der Vervollständigungsliste für Deklarationen und für return-Anweisungen in Methoden aus.

  • enum-Schlüsselwort: Wenn Sie nach einem Gleichheitszeichen für eine enum-Zuweisung die Leertaste drücken, wird eine Vervollständigungsliste angezeigt. IntelliSense wählt automatisch ein Element in der Liste aus, basierend auf dem Kontext in Ihrem Code. IntelliSense wählt zum Beispiel automatisch Elemente in der Vervollständigungsliste aus, nachdem Sie das Schlüsselwort return eingegeben haben und wenn Sie eine Deklaration vornehmen.

  • as- und is-Operatoren: IntelliSense zeigt automatisch eine gefilterte Vervollständigungsliste an, wenn Sie die Leertaste drücken, nachdem Sie das Schlüsselwort as oder is eingegeben haben.

  • Ereignisse: Wenn Sie das Schlüsselwort event eingeben, sind in der Vervollständigungsliste nur Delegattypen enthalten.

  • Parameter-Hilfe: IntelliSense kann automatisch nach der ersten Methodenüberladung gefiltert werden, die den Parametern während der Eingabe entspricht. Falls mehrere Methodenüberladungen verfügbar sind, können Sie die NACH-OBEN- bzw. NACH-UNTEN-TASTE verwenden, um in der Liste zur nächsten möglichen Überladung zu navigieren.

Zuletzt verwendete Member

IntelliSense speichert, welche Member Sie in der Popupliste Member auflisten zuletzt ausgewählt haben, um die automatische Vervollständigung von Objektnamen zu ermöglichen. Bei der nächsten Verwendung der Memberliste werden die zuletzt verwendeten Member oben angezeigt. IntelliSense löscht den Verlauf der zuletzt verwendeten Elemente zwischen jeder Visual-Studio-Sitzung.

override

Beim Eingeben von override und Drücken der Leertaste zeigt IntelliSense alle zulässigen Basisklassenmember an, die Sie in einem Popuplistenfeld überschreiben können. Durch die Eingabe des Rückgabetyps der Methode nach override wird IntelliSense angewiesen, nur Methoden anzuzeigen, die denselben Typ zurückgeben. Wenn IntelliSense keine Übereinstimmung findet, werden alle Basisklassenmember angezeigt.

IntelliSense mit KI-Erweiterung

Visual Studio IntelliCode bietet KI-basierte IntelliSense-Vervollständigungslisten. IntelliCode trifft eine Vorhersage hinsichtlich der höchstwahrscheinlich korrekten zu verwendenden API statt einfach nur eine alphabetische Memberliste anzuzeigen. Sie verwendet Ihren aktuellen Codekontext und die aktuellen Muster, um die dynamische Liste bereitzustellen.

Automatische Codegenerierung

Hinzufügen mit

Der IntelliSense-Vorgang Hinzufügen mit fügt automatisch die erforderlichen using-Anweisungen zu Ihrer Codedatei hinzu. Durch diese Funktion können Sie den Schwerpunkt auf den zu schreibenden Code statt auf einen anderen Teil des Codes legen.

Um den Vorgang Hinzufügen mit zu initiieren, positionieren Sie den Cursor auf einem Typverweis, der nicht aufgelöst werden kann. Wenn Sie beispielsweise eine Konsolenanwendung erstellen und anschließend XmlReader zum Text der Main-Methode hinzufügen, wird eine rote Wellenlinie in dieser Codezeile angezeigt, da der Typverweis nicht aufgelöst werden kann. Sie können dann den Vorgang Hinzufügen mit über das Menü Schnelle Aktionen aufrufen. Das Menüelement Verwenden des <Namespaces> ist nur sichtbar, wenn der Cursor im nicht aufgelösten Verweis positioniert wird.

Um in diesem Beispiel die using-Direktive automatisch zu Ihrem Code hinzuzufügen, wählen Sie das Symbol der Fehler-Glühbirne und dann mit System.Xml; aus.

Screenshot eines Vorgangs zum Hinzufügen mit einem Vorschaubild.

Beim Einfügen fehlende using-Direktiven hinzufügen

IntelliSense kann automatisch fehlende using-Direktiven zum Code hinzufügen, wenn Sie einen Typ in Ihre Codedatei einfügen. Mit diesem Feature sparen Sie Zeit, da das Hinzufügen fehlender using-Anweisungen beim Einfügen eines Typs in eine Datei automatisiert wird.

Sie können dieses Feature wie folgt aktivieren:

  1. Wählen Sie Extras>Optionen aus.
  2. Wählen Sie im linken Bereich den Text-Editor>C# (oder Visual Basic) >Erweitert aus.
  3. Wählen Sie unter Direktiven verwenden die Option Fehlende Direktiven beim Einfügen hinzufügen aus.

Using-Direktiven entfernen und sortieren

Mit der Option Using-Direktiven entfernen und sortieren können Sie using- und extern-Deklarationen sortieren und entfernen, ohne das Verhalten des Quellcodes zu ändern. Im Laufe der Zeit können Quelldateien aufgrund von nicht benötigten und unorganisierten using-Direktiven sehr groß werden und schwer zu lesen sein. Die Option Using-Direktiven entfernen und sortieren komprimiert Quellcode, in dem sie nicht verwendete using-Direktiven entfernt, und verbessert die Lesbarkeit durch Sortierung.

Wenn Sie diese Option verwenden möchten, wählen Sie IntelliSense>Usings sortieren>bearbeiten in der Menüleiste aus, oder klicken Sie mit der rechten Maustaste in den Code-Editor und wählen Sie Usings entfernen und sortieren aus.

Implementieren einer Schnittstelle

IntelliSense bietet die Möglichkeit, eine Schnittstelle bei Ihrer Arbeit im Code-Editor zu implementieren. Um eine Schnittstelle ordnungsgemäß zu implementieren, müssen Sie normalerweise eine Methodendeklaration für jeden Schnittstellenmember in der Klasse erstellen. Nachdem Sie den Namen einer Schnittstelle in einer Klassendeklaration eingegeben haben, zeigt IntelliSense eine Glühbirne für Schnellaktionen angezeigt. Mithilfe der Glühbirne können Sie die Schnittstelle mit expliziten oder impliziten Namen automatisch implementieren. Bei expliziter Benennung tragen die Methodendeklarationen den Namen der Schnittstelle. Bei impliziter Benennung fehlt bei den Methodendeklarationen ein Hinweis auf die zugehörige Schnittstelle. Auf eine explizit benannte Schnittstellenmethode kann nur über eine Schnittstelleninstanz zugegriffen werden, und nicht über eine Klasseninstanz. Weitere Informationen finden Sie unter Explizite Schnittstellenimplementierung.

Bei der Schnittstellenimplementierung wird die Mindestanzahl von Methodenstubs generiert, die für die Schnittstelle benötigt werden. Wenn eine Basisklasse Teile der Schnittstelle implementiert, werden diese Stubs nicht neu generiert.

Implementieren abstrakter Basisklassen

IntelliSense bietet eine Option zum automatischen Implementieren von Membern einer abstrakten Basisklasse während der Arbeit im Code-Editor. Normalerweise erfordert das Implementieren von Membern einer abstrakten Basisklasse das Erstellen einer neuen Methodendefinition für jede Methode der abstrakten Basisklasse in der abgeleiteten Klasse. Nachdem Sie den Namen einer abstrakten Basisklasse in einer Klassendeklaration eingegeben haben, zeigt IntelliSense eine Schnellaktionen-Glühbirne an. Durch die Glühbirne können Sie Basisklassenmethoden automatisch implementieren.

Die durch das Feature Abstrakte Basisklasse implementieren generierten MethodStubs werden durch den in der Datei MethodStub.snippet definierten Codeausschnitt modelliert. Codeausschnitte können geändert werden. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Erstellen eines Codeschnipsels in Visual Studio.

Aus Verwendung generieren

Mit der Funktion Aus Verwendung generieren können Sie Klassen und Member verwenden, bevor Sie sie definieren. Sie können ein Stub für alle Klassen, Konstruktoren, Methoden, Eigenschaften, Felder oder Enumerationen generieren, die Sie verwenden möchten, aber noch nicht definiert haben. Sie können neue Typen und Member generieren, ohne Ihre aktuelle Position im Code zu verlassen. Dies verringert die Unterbrechung des Workflows.

Unter jedem undefinierten Bezeichner erscheint eine rote, verschnörkelte Wellenlinie. Wenn Sie den Mauszeiger auf den Bezeichner bewegen, wird eine Fehlermeldung als QuickInfo angezeigt. Sie können eines der folgenden Verfahren verwenden, um die entsprechenden Optionen anzuzeigen:

  • Wählen Sie den nicht definierten Bezeichner aus. Unter dem Bezeichner wird ein Fehlerglühbirnensymbol für Schnellaktionen angezeigt. Wählen Sie das Fehlerglühbirnensymbol.

  • Wählen Sie den nicht definierten Bezeichner, und drücken Sie Ctrl+Punkt (.).

  • Klicken Sie mit der rechten Maustaste auf den nicht definierten Bezeichner, und wählen Sie auf Schnellaktionen und Refactorings.

Die folgenden Optionen können angezeigt werden:

  • Eigenschaft generieren

  • Feld generieren

  • Generieren einer Methode

  • Klasse generieren

  • Neuen Typ generieren (für Klasse, Struktur, Schnittstelle oder Enumeration)

Ereignishandler generieren

Im Code-Editor kann IntelliSense Sie beim Verknüpfen von Methoden (Ereignishandlern) mit Ereignisfeldern unterstützen.

Wenn Sie den +=-Operator nach einem Ereignisfeld in einer CS-Datei eingeben, fordert IntelliSense Sie dazu auf, die Tab-Taste zu drücken. Hierbei wird eine neue Instanz eines Delegaten eingefügt, der auf die Methode zum Behandeln des Ereignisses zeigt.

Bildschirmbild, das eine angeforderte Hook-up-Ereignishandler-Methode zeigt.

Wenn Sie die Tab-Taste drücken, schließt IntelliSense die Anweisung automatisch für Sie ab und zeigt den Ereignishandlerverweis als ausgewählten Text im Code-Editor an. Um die automatische Ereigniseinbindung abzuschließen, fordert IntelliSense Sie erneut zum Drücken der TAB-TASTE auf, um einen leeren Stub für den Ereignishandler zu erstellen.

Screenshot einer generierten Ereignishandlermethode.

Wenn Sie erneut die Tab-Taste drücken, fügt IntelliSense einen Methodenstub mit der korrekten Unterschrift hinzu und platziert den Cursor im Text Ihres Ereignishandlers.

Wenn ein neuer Delegat, der von IntelliSense erstellt wird, auf einen vorhandenen Ereignishandler verweist, vermittelt IntelliSense diese Informationen über die QuickInfo. Sie können diesen Verweis dann ändern. Der Text ist im Code-Editor bereits ausgewählt. Andernfalls ist die automatische Ereignisanbindung jetzt abgeschlossen.

Hinweis

Verwenden Sie im Menü Ansicht (STRG+-) den Befehl Rückwärts navigieren, um zurück zur Anweisung für die Ereigniseinbindung zu wechseln.