Frage

Ich habe einigen Code gesehen, wo eine Klasse importiert wird, statt einen Namespace, so dass alle statischen Mitglieder / Methoden dieser Klasse zur Verfügung. Ist das ein Merkmal von VB? Oder haben andere Sprachen tun dies auch?

TestClass.vb

public class TestClass
    public shared function Somefunc() as Boolean
        return true
    end function
end class

MainClass.vb

imports TestClass

public class MainClass
    public sub Main()
        Somefunc()
    end sub
end class

Diese Dateien sind im Verzeichnis App_Code. Einfach nur neugierig, weil ich noch nie, dies zu tun gedacht, noch habe ich gelesen, es überall.

War es hilfreich?

Lösung

Einer der Gründe, diese Funktion vorhanden ist, ist Visual Basic 6.0 ist GlobalMultiUse Option für Instancing zu emulieren. Visual Basic 6.0 hat nicht die Fähigkeit, Module öffentlich über eine DLL-Grenze zu machen. Stattdessen legen Sie die Instancing-Eigenschaft auf GlobalMultiUse. Es wird verwendet, vor allem für die Utility-Klassen wie eine Klasse, die eine Reihe von mathematischen Funktionen exportieren.

Jedes Mal, wenn Sie mit dem GlobalMultiUse Instancing ein Unterprogramm oder eine Funktion für eine Klasse aufrufen, Visual Basic 6.0 instanziiert eine Klasse hinter den Kulissen, bevor Sie die Funktion aufrufen.

Es kann missbraucht werden, um globale Funktionen / Variablen mit allen Vor- und Nachteilen zu erzeugen.

Andere Tipps

Ja, es ist eine Sprache Visual Basic-Funktion . Während Sie Aliasnamen erstellen können, mit C # 's Aussage verwenden, es doesn' t scheint, dass Sie eine gemeinsam genutzte Klasse in Umfang importieren. Um ehrlich zu sein, habe ich immer nur einmal in einem Legacy-Projekt verwendet, das bereits früher hatte. Ich sehe einen gewissen Wert, aber ich fürchte, es für zukünftige Wartbarkeit des Codes mehr schaden als nützen verursachen kann.

Ich benutze es, wenn ich die gleiche Bibliothek verwende viel Zeit. Ein gutes Beispiel ist System.Math.

C # unterstützt nicht das, was ich finde, sehr ärgerlich sein.

Eigentlich ist diese Funktion verfügbar, da es sich um eine shared Funktion. Wenn Sie den gemeinsamen Modifikator zu entfernen, würden Sie noch eine Instanz der Klasse erstellen, müssen sie zugreifen zu können.

Um den Zugriff auf alle Variablen zu erreichen und alle Funktionen innerhalb einer Klasse standardmäßig würden Sie es erben.

Mein Wissen Import eine Klasse knüpft grundsätzlich direkten Bezug um es zu schaffen, nicht jede Art von Instanz davon für Sie zu nutzen.

EDIT für Klarheit: Die Links sind es VB spezifische Links, so erklärt die Funktionalität dieses zu VB.NET im Zusammenhang

Warten, warten, warten ....

Ich habe diesen Morgen nur, dass wir alle Objekte (Klasse-s) innerhalb jeder Klasse abgeleitet könnten Dazu brauchen ihre Referenzen mit dieser Methode / Funktion;

Protected Overrides Sub Finalize()
    MyBase.Finalize()
End Sub
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top