Hébergement - Code .Net

Visual Basic/C# – Qu’est-ce que le method overloading?

L’overload de méthode est un concept assez simple et très utile en programmation. Nous sommes chanceux puisque C# et Visual Basic peuvent tout les deux faire du method overloading!

Qu’est-ce que c’est?

En gros, il s’agit de deux méthodes utilisant le même nom mais avec des signatures différentes. Ce qui veut dire que les deux méthodes ont sensiblement la même fonction dans le programme, toutefois leurs paramètres et valeurs de retour ne sont pas les mêmes.

Un exemple s’il vous plait!?

J’ai créé une classe simple nommée Calculator dans un nouveau projet de type Console.

C#

using System.Collections.Generic;

namespace MethodOverloading
{
    public class Calculator
    {
        public Queue LastResults { get; set; }

        public Calculator()
        {
            LastResults = new Queue();
        }

        public int AddNumbers(int NumberOne, int NumberTwo)
        {
            int Result = NumberOne + NumberTwo;

            return Result;
        }

        public double AddNumbers(double NumberOne, double NumberTwo)
        {
            double Result = NumberOne + NumberTwo;

            return Result;
        }
    }
}

Visual Basic

Public Class Calculator
    Public Property LastResults As Queue(Of Double)

    Public Sub New()
        LastResults = New Queue(Of Double)
    End Sub

    Public Function AddNumbers(ByVal NumberOne As Integer, ByVal NumberTwo As Integer) As Integer
        Dim Result As Integer
        Result = NumberOne + NumberTwo

        Return Result
    End Function

    Public Function AddNumbers(ByVal NumberOne As Double, ByVal NumberTwo As Double) As Double
        Dim Result As Double
        Result = NumberOne + NumberTwo

        Return Result
    End Function
End Class

Dans cette classe vous pouvez voir que j’ai ajouté une méthode avec le même nom deux fois. C’est effectivement une méthode qui est overloaded! Le nom est le même, toutefois la signature ne l’est pas. Dans la première je retourne un double et prend (double,double) en paramètres tandis que dans la deuxième je retourne un Int et prend (Int,Int) en paramètres. J’ai ajouté LastResults simplement comme historique de calcul potentiel pour que ça ait éventuellement l’air d’une calculatrice.

Comment utiliser une methode de ce type?

Ma classe Program.cs/MethodOverloading.vb est construite comme suit.

C#

Overloads Add Number

Visual Basic

Add Numbers Overload VB.Net

J’aimerais que vous portiez attention à mon appel de la méthode AddNumbers. Vous pouvez voir que la complétion nous indique +1 overload. C’est que Visual Studio a bien compris que nous avons deux possibilités d’overload pour cette méthode, exactement ce que nous souhaitons.

C#

using System;

namespace MethodOverloading
{
    class Program
    {
        static void Main(string[] args)
        {
            Calculator MyCalculator = new Calculator();

            double DoubleResult = MyCalculator.AddNumbers(15.32, 64.21);
            int IntResult = MyCalculator.AddNumbers(67, 98);

            Console.WriteLine("The Double Result: {0}", DoubleResult);
            Console.WriteLine("The Int Result: {0}", IntResult);
            Console.ReadKey();
        }        
    }
}

Visual Basic

Module MethodOverloading

    Sub Main()
        Dim MyCalculator As New Calculator()

        Dim DoubleResult As Double
        DoubleResult = MyCalculator.AddNumbers(15.32, 64.21)

        Dim IntResult As Integer
        IntResult = MyCalculator.AddNumbers(67, 98)

        Console.WriteLine("The Double Result: {0}", DoubleResult)
        Console.WriteLine("The Int Result: {0}", IntResult)
        Console.ReadKey()
    End Sub

End Module

Dans le code ci-dessus, j’utilise les deux méthodes l’une à la suite de l’autre puis montre les résultats dans la console.

Method Overloading Result

Ça fonctionne!

Comme vous pouvez le voir dans la sortie de la console, l’une des deux valeurs contient des décimales (Double) tandis que l’autre est entière (Int). Ceci confirme que le résultat des deux méthodes est différent puisque nous avons utilisé un overload différent pour chaque appel. Vous remarquerez que le .Net Framework tire souvent avantage de cette fonctionnalité et vous devriez en faire autant dans votre code!

Lorsque vous souhaitez créer deux méthodes ayant des buts communs, mais ne partagent pas les mêmes paramètres ou la même valeur de retour, il s’agit peut-être de candidat pour un overload!

Youtube

C#

Visual Basic

Next article Expérimentation : comptant contre investissements
Previous article Pourquoi la loterie n'est pas un investissement?!

Related posts