Namespace-Referenzen in C # vs. VB.Net

8

In VB.Net können Sie etwas wie das Folgende ohne irgendwelche Probleme tun ... ignorieren Sie einfach die Tatsache, dass dies eine ziemlich nutzlose Klasse ist: -)

%Vor%

Wenn Sie jedoch dasselbe in C # tun ...

%Vor%

Sie erhalten einen Fehler in der Zeile mit der Rückgabe von "Collections.Generic.List" mit den Worten: "Der Typ oder Namespace-Name 'Collections' konnte nicht gefunden werden (fehlt eine using-Direktive oder eine Assembly-Referenz?)"

Ich weiß, dass Sie eine using-Direktive zu System.Collections.Generic haben müssen, um List zu verwenden, aber ich weiß nicht warum . Ich verstehe auch nicht, warum ich nicht den gleichen Fehler in der Funktionsdeklaration bekomme, sondern nur in der return-Anweisung.

Ich hatte gehofft, jemand könnte das erklären oder mich sogar auf eine Technet-Seite verweisen, die es erklärt. Ich habe gesucht, kann aber nichts finden, was dieses Konzept erklärt.

Edit: Zu beachten ist, dass es in der Frage wirklich um die Referenzierung eines Sub-Namespaces geht, wie im Beispiel, das auf Collections in System verweisen kann.

    
tcnolan 22.08.2009, 05:51
quelle

3 Antworten

4

using Direktive in C # erlaubt dies nicht :

  

Erstellen Sie eine using-Anweisung, um die   Typen in einem Namespace ohne zu müssen   Geben Sie den Namespace an. Eine Verwendung   Richtlinie gibt Ihnen keinen Zugriff auf   alle Namespaces, die in der Datei verschachtelt sind   Namespace, den Sie angeben.

VB.NET unterstützt jedoch etwas näheres Verhalten mit Imports Anweisung:

  

Der Umfang der gemachten Elemente   verfügbar durch eine Imports-Anweisung   hängt davon ab, wie genau du wann bist   Verwenden der Imports-Anweisung. Zum   Beispiel, wenn nur ein Namespace ist   angegeben, alle eindeutig benannten Mitglieder   dieses Namensraums und Mitglieder von   Module in diesem Namensraum sind   verfügbar ohne Qualifikation. Ob   sowohl ein Namespace als auch der Name eines   Element dieses Namensraums sind   spezifiziert, nur die Mitglieder davon   Element sind ohne verfügbar   Qualifikation.

Referenz-SO-Frage

    
Kirtan 22.08.2009, 06:07
quelle
4

Dies liegt daran, dass VB.Net partielle Namespaces unterstützt ; C # nicht.

  

Mit Visual Basic wird System importiert   standardmäßig und untergeordnete Namespaces sind   automatisch aufgelöst.

Lesen Sie mehr in diesem Artikel.

VB.Net vs. C #, Runde 2: Partielle Namespaces

    
rahul 22.08.2009 06:01
quelle
0

Sie können System.Collections.Generic.List sagen. das würde funktionieren.

Ich denke, Sie müssen die gesamte Liste angeben und den Systemteil nicht auslassen.

Auch Sie müssen es mit einem String wie in Liste ähnlich der Liste (von String)

    
obelix 22.08.2009 06:01
quelle

Tags und Links