ものがたり(旧)

atsushieno.hatenablog.com に続く

Javaでは常に直列化されていることが評判のよろしくないHashtableだけど、逆に.NETでは同期化されたHashtableの挙動がけっこう怪しい。以下ここから:


Hashtable h = Hashtable.Synchronized (new Hashtable ());
h ["a"] = 1;
IEnumerator e = (h as ICollection).GetEnumerator();
Console.WriteLine (e.MoveNext ());
DictionaryEntry e = (DictionaryEntry) e.Current;

これは.NET 1.1 SP1(他は未確認)ではInvalidOperationExceptionになる。MoveNext()の戻り値に注意。ちなみに.NET 2.0 beta2ではGetEnumerator()がnullぬるぽを返しちゃったりして。

とりあえず今投げているコレの対応が決まるくらいリリースサイクルが落ち着いたら、product feedbackに投げてみようかな。って、既にいくつもクールなアイディア(自称)を投げまくってるんだけど、実装されたのって1つか2つくらいしか無いんだよねぇ。