Déclarer un opérateur (exemple : "+")

Contenu du snippet

Voici un code qui présente rapidement comment déclarer un opérateur pour une classe d'objet "faite maison".

Source / Exemple :


Sub Main()
        Dim Objet1 As New Class1
        Objet1.Nombre = 1
        Objet1.Texte = "Hello "

        Dim Objet2 As New Class1
        Objet2.Nombre = 4
        Objet2.Texte = "World ! "

        'Il est désormais possible d'écrire Objet1 + Objet2 de la même manière que 1 + 2. Ceci est rendu possible par
        'la déclaration de l'opérateur "+" à l'intérieur de la classe "Class1" décrite plus bas.
        MsgBox((Objet1 + Objet2).Texte & (Objet1 + Objet2).Nombre)

    End Sub

    Public Class Class1
        Public Nombre As Single
        Public Texte As String

        'Déclaration de l'opérateur "+". Ceci permettra d'écrire des lignes du style Objet3 = Objet1 + Objet2
        'En ecrivant Objet1 + Objet2, c'est le code écris dans la description de l'opérateur qui sera executé.
        'Ici ecrire Objet1 + Objet2 additionne le nombre de chaque objet passé en argument, et concatenne
        'le texte de ces memes objets.
        Shared Operator +(ByVal Arg1 As Class1, ByVal Arg2 As Class1) As Class1
            Dim ReturnedValue As New Class1 'Objet qui sera retourné par l'opération "+"
            ReturnedValue.Nombre = Arg1.Nombre + Arg2.Nombre
            ReturnedValue.Texte = Arg1.Texte & Arg2.Texte
            Return ReturnedValue 'On retourne le nouvel objet
        End Operator
    End Class

Conclusion :


Je n'ai pas grand chose à ajouter, je pense que le code parle de lui même, un opérateur se résume donc à une procédure dont l'écriture pour l'appeler est un peu différent, ceci dit, il existe d'autres opérateurs, ici il ne s'agit que d'un exemple mais ils sont nombreux et il en existe même un pour le changement de type par appel à CType - par exemple pour pouvoir ecrire un truc du genre : MsgBox(CType(Objet1, String)) -.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.