VB.NET: Wie VB.NET-Modul Referenz?
Bekam ich einen Utility-Modul seit VB.NET nicht statische Klasse wie C# und Modul ist die statische Klasse in VB.NET. Der Grund, dass ich Modul ist, denn ich bin mit der Erweiterung Methode, und es kann nur im Modul.
Kann ich nicht die Referenz auf dieses Modul, aber wenn ich meinen code in eine Klasse. Ich verweisen kann, um es ohne irgendein problem. Was könnte der Grund sein? Verpasste ich C#.
Edit: Das Modul ist im inneren ein class-library-call-Dienstprogramm.
InformationsquelleAutor der Frage Jack | 2009-01-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Module in VB nicht Klassen und können nicht verwendet werden, um Objekte zu instanziieren. Vielmehr sind Sie etwas ähnlich wie namespaces, mit dem Unterschied, dass namespaces nicht enthalten Funktionen, die direkt. Also der Grund für die Module bereitzustellen, die eine Methode zum gruppieren von Funktionen logisch, die gehören nicht zu einer Klasse.
Dies macht sehr viel Sinn, wenn man bedenkt, dass nicht alles logisch gehört zu einer Klasse. Betrachten
System.Math
. Es gibt absolut keinen Grund, dass eine Klasse, andere als eine seltsame OOP Purismus.Durch die Art und Weise, können Sie keine Referenz statischen Klassen in C# entweder, zumindest dann nicht, wenn ich das richtig verstehe, was du meinst mit "Referenz". Vielleicht können Sie dies klären.
InformationsquelleAutor der Antwort Konrad Rudolph
Müssen Sie markieren das Modul als Public Modul.
InformationsquelleAutor der Antwort Jack
.NET-Compiler kann jede Art von Sprache, die syntax und die schalten Sie es in einen .NET-äquivalent. Manchmal gibt es eine eins zu eins Korrespondenz zu anderen Zeiten gibt es nicht.
Mithilfe der .NET Reflector Sie sehen können, was der compiler wirklich macht.
In VB.NET das Modul vorhanden ist, da der Erbe geerbt von Visual BASIC und teilweise von Microsoft BASIC.
Den VB.NET compiler wird dies
Und es in dieser (code weggelassen aus Platzgründen)
In C# das äquivalent ist das
Alle, die Sache ist, dass die emittierten CIL macht den job richtig.
Diese Funktion ist der Hauptgrund, warum so viele ältere Visual BASIC 6-Programmierer sind sehr verärgert über MS ändert die Sprache. Zum Beispiel das Schlüsselwort Integer aussenden eines Int32 statt ein Int16.
Module ausgesetzt sind, auf andere Assemblys verweisen auf die ursprüngliche assembly, solange das Modul als public deklariert.
InformationsquelleAutor der Antwort RS Conley
Vielleicht die Methoden/subs sind nicht öffentlichen? Ich hatte das problem einmal, und es würde ermöglichen Zugang zu lokalen code in Ihrer Klasse, nicht aber, wenn es wurde außerhalb Ihrer Klasse und mit der Aufschrift "Privat".
InformationsquelleAutor der Antwort SqlRyan
InformationsquelleAutor der Antwort Jack
Ich verstehe nicht, was Ihr bittet.
VB.NET hat statische Klassen wie in C#, da in VB.NET ein
Module
IST einestatic class
. Sie sind ein und dasselbe. Alles, was Sie tun können, mit einer statischen Klasse, die Sie tun können, mit einem Modul. Vielleicht haben Sie nicht markiert Public/Private/Protected access korrekt?InformationsquelleAutor der Antwort Joel Coehoorn