struct fooのstatic foo operator+(foo,foo)を定義して、
foo x=new foo(),y=new foo();
x=x+y;
としても、xにoperator+ x,yの演算結果は入るんですが、どうも変です。

デバッガで追跡してみると、
x=x+y;//ここまでは大丈夫
foobar();//ここでxの内容が何故か元に戻る

operator+内部では、新しいインスタンスを生成し(new foo())、それに演算結果を格納、
そのインスタンスを返しています。

C#はGCが付いていると訊いたので、メソッド外部へインスタンスをたらい回しにしても
参照は消えていないのでoperator+で宣言した実体は生きているはずですし、
演算前のxも消えるはずです。何でこんな事になってしまうんでしょうか。
もうやだ。みんな死ねばいいのに。