Partager via


Comment : utiliser la surcharge d'opérateur pour créer une classe de nombres complexes (Guide de programmation C#)

Mise à jour : novembre 2007

Cet exemple montre comment utiliser la surcharge d'opérateur pour créer une classe de nombres complexes Complex qui définit une addition complexe. Le programme affiche les parties imaginaires et réelles des nombres et le résultat de l'addition en utilisant une substitution de la méthode ToString.

Exemple

public struct Complex
{
    public int real;
    public int imaginary;

    public Complex(int real, int imaginary)  //constructor
    {
        this.real = real;
        this.imaginary = imaginary;
    }

    // Declare which operator to overload (+),
    // the types that can be added (two Complex objects),
    // and the return type (Complex):
    public static Complex operator +(Complex c1, Complex c2)
    {
        return new Complex(c1.real + c2.real, c1.imaginary + c2.imaginary);
    }

    // Override the ToString() method to display a complex number in the traditional format:
    public override string ToString()
    {
        return (System.String.Format("{0} + {1}radius", real, imaginary));
    }
}

class TestComplex
{
    static void Main()
    {
        Complex num1 = new Complex(2, 3);
        Complex num2 = new Complex(3, 4);

        // Add two Complex objects through the overloaded plus operator:
        Complex sum = num1 + num2;

        // Print the numbers and the sum using the overriden ToString method:
        System.Console.WriteLine("First complex number:  {0}", num1);
        System.Console.WriteLine("Second complex number: {0}", num2);
        System.Console.WriteLine("The sum of the two numbers: {0}", sum);

        // Keep the console window open in debug mode.
        System.Console.WriteLine("Press any key to exit.");
        System.Console.ReadKey();
    }
}
/* Output:
    First complex number:  2 + 3i
    Second complex number: 3 + 4i
    The sum of the two numbers: 5 + 7i
*/

Voir aussi

Concepts

Guide de programmation C#

Référence

Opérateurs C#

operator (Référence C#)

Autres ressources

Why are overloaded operators always static in C#?