演算子のオーバーロード

演算子のオーバーロード - C# によるプログラミング入門 | ++C++; // 未確認飛行 C


C++と同様にC#にも演算子オーバーロードがあります。定義の仕方もまぁほぼ同じですね。

using System;

class Class {
    public int i;
    
    public Class (int i) {
        this.i = i;
    }
    
    // Class同士の足し算
    public static Class operator+ (Class x, Class y) {
        return new Class(x.i+y.i);
    }
    
    // Classとintの足し算
    public static Class operator+ (Class x, int y) {
        return new Class(x.i+y);
    }
    
    // intとClassの足し算
    public static Class operator+ (int x, Class y) {
        return new Class(x+y.i);
    }
}

class Program {
    static void Main() {
        var cobj1 = new Class(1);
        var cobj2 = new Class(10);
        
        var cobj3 = cobj1 + cobj2;
        Console.WriteLine(cobj3.i);
        
        var cobj4 = cobj1 + 50;
        Console.WriteLine(cobj4.i);
        
        var cobj5 = 100 + cobj2;
        Console.WriteLine(cobj5.i);
    }
}
$ main
11
51
110

何がオーバーロード可能かは上記URLに書いてあるので一通り覚えときましょうー。