Hi,<br><br>  This is now fixed in SVN HEAD/2.6/2.4 branches, altough the fix will not make mono 2.4.3.<br><br>                 Zoltan<br><br><div class="gmail_quote">On Wed, Nov 25, 2009 at 2:24 PM, Matt Guo <span dir="ltr">&lt;<a href="mailto:matt@mattguo.com">matt@mattguo.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hey, all,<br>
<br>
Today I was stucked by a strange problem for several hours, in a word,<br>
we can&#39;t use delegate (including delegates form<br>
normal methods, annonymous methods and lambda) as the dictionary key.<br>
It works on .Net, but not on Mono. The reason is that on Mono,<br>
delegate.GetHashCode () can change: initially the hash code is 0, then<br>
after the delegate&#39;s first invokation the hash code will become<br>
non-zero (and shall be the address of the method).<br>
So is that a bug of mono? (I used the latest Mono 2.4 release)<br>
<br>
Following example explains everything.<br>
<br>
[Code]<br>
<br>
                       Dictionary &lt;EventHandler, int&gt; dict = new<br>
Dictionary&lt;EventHandler, int&gt; ();<br>
                       List &lt;EventHandler&gt; list = new List&lt;EventHandler&gt; ();<br>
<br>
                       EventHandler handler = (s, e) =&gt; Console.WriteLine (s);<br>
                       dict.Add (handler, 0);<br>
                       list.Add (handler);<br>
                       Console.WriteLine (&quot;{0}, {1}, {2}&quot;,<br>
handler.GetHashCode(),<br>
dict.ContainsKey (handler), list.Contains (handler));<br>
                       //Call delegate<br>
                       handler (null, EventArgs.Empty);<br>
                       Console.WriteLine (&quot;{0}, {1}, {2}&quot;,<br>
handler.GetHashCode(),<br>
dict.ContainsKey (handler), list.Contains (handler));<br>
<br>
[Mono Output]<br>
0, True, True<br>
-1215724864, False, True<br>
<br>
[.Net Output]<br>
1881641292, True, True<br>
1881641292, True, True<br>
<font color="#888888"><br>
<br>
--<br>
B.R.<br>
GUO Rui (Matt)<br>
_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
</font></blockquote></div><br>