JScript.NETで演算子のオーバーロードを実現!
------
import System;
import System.Runtime.CompilerServices;
class Foo
{
    private var Value: int;
    public function Foo(val: int) {
        this.Value = val;
    }
    public static SpecialName function op_Addition(a: Foo, b: Foo): Foo {
        return new Foo(a.Value + b.Value);
    }
    public static SpecialName function op_Multiply(a: Foo, b: Foo): Foo {
        return new Foo(a.Value * b.Value);
    }
    public static SpecialName function op_UnaryNegation(a: Foo): Foo {
        return new Foo(-a.Value);
    }
    public override function ToString(): String {
        // SpecialNameを外した時との挙動の差がわかりやすいようにわざと100倍している
        return (100 * this.Value).ToString();
    }
}

var a: Foo = new Foo(123);
var b: Foo = new Foo(45);
Console.WriteLine("{0}, {1}, {2}", -a, a + b, a * b);
------
参考URL:
演算子のオーバーロード
ttp://msdn2.microsoft.com/ja-jp/library/ms229032(vs.80).aspx