◆ 演算子は static メソッド
◆ interface に static を定義できない
◆ where の条件を + 演算子もってるもの とできない
◆ dynamic ならできるけど + 演算子あるかチェックしてくれない 

LINQ メソッドが便利なので多用しています
基本 T 型でなんでも好きな型が使えるようになってるのに Sum メソッドは数値のみでした

足し算を使える型全部に対応してほしいのでこういうことができるようにしたいです
class Addable
{
    public int a { get; set; }
    public int b { get; set; }
    public static Addable operator +(Addable v1, Addable v2)
    {
        return new Addable { a = v1.a + v2.a, b = v1.b + v2.b };
    }
}

var v1 = new Addable { a = 1, b = 2 };
var v2 = new Addable { a = 10, b = 20 };
v1 + v2
// Addable { a=11, b=22 }

こういう型に対して
new[] { v1, v2 }.Sum()
// Addable { a=11, b=22 }


一見簡単そうに思えるのですが Generics の T 型になると T が 「operator+」 を持ってることを where で示さないといけないです

でも operator+ は static メソッドです
C# では static なものを interface に定義できません

用意されてる where の条件に 「+ オペレータが実装されてる」 とかあると思っていたのになかったです

意外


やるとしたら dynamic で受け取って + すること
できるといえばできますが dynamic なので 実行するまで + オペレータを実装してる型かどうかでエラーチェックできません

Sum に数値型しか用意されてない理由がわかりました