2007-11-21から1日間の記事一覧

拡張メソッドの字面が引き起こす混乱

C#

こちらは変換規則なんてややこしい問題ではないけど、字面が引き起こす混乱の例。 using System; class P { static void Main() { S a = new S { Val = 0 }; Console.WriteLine( a.Val ); // 0 a.Inc(); Console.WriteLine( a.Val ); // 1 a.ExtInc(); Conso…

if ( 拡張メソッド == インスタンスメソッド ) return ?

C#

前の記事を書いてからやっと気付いたけど(^^;、これはつまりインスタンスメソッドの動作をまねてるんですね。 もうちょっと調べてみました。ToString() の例はイマイチなので、別の例に差し替えます。 using System; class Program { static void Main() { B…

拡張メソッド != 静的メソッド

C#

C#3.0 の拡張メソッドの怖いお話。拡張メソッドと静的メソッドは構文の字面だけの違いで、ほかは同じだよと言われることが多いけど、実は違います。仕様書に書いてはあるけど、はっきり注意を喚起していないので。拡張メソッドの仕様はこちら。 念のため引用…