Question

J'ai vu du code dans lequel une classe est importée au lieu d'un espace de noms, ce qui rend tous les membres / méthodes statiques de cette classe disponibles. Est-ce une fonctionnalité de VB? Ou est-ce que d'autres langues le font aussi?

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

Ces fichiers se trouvent dans le répertoire App_Code. Juste curieux, parce que je n'avais jamais pensé faire cela auparavant, et je n'ai jamais lu à ce sujet nulle part.

Était-ce utile?

La solution

L'une des raisons pour lesquelles cette fonctionnalité est en place consiste à émuler l'option GlobalMultiUse for Instancing de Visual Basic 6.0. Visual Basic 6.0 n'a pas la capacité de rendre les modules publics via une limite de DLL. A la place, vous définissez la propriété instancing sur GlobalMultiUse . Il est principalement utilisé pour les classes d’utilitaires, comme une classe qui exporte une série de fonctions mathématiques.

Chaque fois que vous appelez une sous-routine ou une fonction d'une classe avec le GlobalMultiUse Instancing , Visual Basic 6.0 instancie une classe en arrière-plan avant d'appeler la fonction.

On peut en abuser pour générer des fonctions / variables globales avec tous les avantages et inconvénients.

Autres conseils

Oui, il s'agit d'une fonctionnalité de langage Visual Basic . Bien que vous puissiez créer des alias, à l'aide de la déclaration C # à l'aide de la commande , il ne ' t semble que vous pouvez importer une classe partagée dans la portée. Pour être honnête, je ne l'ai jamais utilisé qu'une seule fois dans un projet hérité qui l'avait déjà utilisé. Je vois une valeur, mais je crains que cela puisse causer plus de tort que de mal à la maintenabilité future de votre code.

Je l'utilise chaque fois que j'utilise la même bibliothèque beaucoup de temps. System.Math.

C # ne supporte pas cela, ce que je trouve très ennuyeux.

En fait, cette fonction est disponible car il s'agit d'un shared fonction. Si vous deviez supprimer le modificateur partagé, vous devriez toujours créer une instance de la classe pour y accéder.

Pour accéder à toutes les variables et à toutes les fonctions d'une classe par défaut, vous souhaitez en hériter.

À ma connaissance, importer une classe est essentiellement une référence directe. à ne pas créer d’instance à utiliser.

EDIT pour plus de clarté: les liens sont des liens spécifiques à VB, expliquant ainsi la fonctionnalité de ceci concernant VB.NET

attendez, attendez, attendez ...

J'ai trouvé ce matin que nous pouvions dériver tous les objets (classes-s) d'une classe. qui ont besoin de leurs références en utilisant cette méthode / fonction;

Protected Overrides Sub Finalize()
    MyBase.Finalize()
End Sub
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top