<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>.NET Framework</title><link>https://www.dotnetzone.gr:443/cs/forums/14/ShowForum.aspx</link><description>Θέματα για threading, remoting, reflection, exception handling, security, regex κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Override GetHashCode σε κλάση με Dictionary</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70191.aspx</link><pubDate>Wed, 02 May 2012 18:33:54 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70191</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70191.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=70191</wfw:commentRss><description>ΟΚ. Ευχαριστώ!&lt;br&gt;</description></item><item><title>Απ: Override GetHashCode σε κλάση με Dictionary</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70190.aspx</link><pubDate>Wed, 02 May 2012 18:27:45 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70190</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70190.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=70190</wfw:commentRss><description>Η GetHashCode δεν χρειάζεται να επιστρέφει κάποιο πραγματικά μοναδικό αριθμό. Κατά κανόνα χρησιμοποιείται για ένα γρήγορο έλεγχο πριν κληθεί η ίδια η Equals. Αρκεί λοιπόν να βεβαιωθείς ότι το ίδιο αντικείμενο θα επιστρέφει πάντα το ίδιο hashcode και ότι θα υπάρχει αρκετή διαφοροποίηση από το ένα αντικείμενο στο επόμενο. Από την άλλη, ο υπολογισμός του HashCode θα πρέπει να είναι γρήγορος, αλλιώς χάνεται το νόημα του "γρήγορου ελέγχου".&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Η μεγάλη διαφοροποίηση χρειάζεται σε containers όπως το Dictionary ή το HashSet οι οποίοι χρησιμοποιούν το HashCode εσωτερικά για γρήγορα Lookups.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Κατά κανόνα ένα απλό XOR μεταξύ των hashcode των πεδίων του αντικειμένου αρκεί για να υπολογίσεις το hashcode του ίδιου του αντικειμένου. Θα πρέπει να προσέξεις όμως ότι το Dictionary δεν έχει δικό του GetHashCode &amp;nbsp;και χρησιμοποιεί την Object.GetHashCode. Αν θέλεις να ληφθούν υπόψη τα hashcode των περιεχομένων του Dictionary θα πρέπει με κώδικα να υπολογίσεις το XOR των τιμών. Για παράδειγμα:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;var hashCode &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; field1.GetHashCode();
hashCode ^&lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; field2.GetHashCode();
&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;foreach&lt;/span&gt; (var pair &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;in&lt;/span&gt; dict)
{
    hashCode ^&lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; pair.Key.GetHashCode();
    hashCode ^&lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; pair.Value.GetHashCode();
}&lt;/span&gt;&lt;/pre&gt;&lt;br&gt;&lt;/div&gt;</description></item><item><title>Override GetHashCode σε κλάση με Dictionary</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70189.aspx</link><pubDate>Wed, 02 May 2012 17:50:10 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70189</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70189.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=70189</wfw:commentRss><description>Έχω μία κλάση στην οποία θέλω να κάνω implement το IEquatable&amp;lt;T&amp;gt;. Τα properties που με ενδιαφέρουν είναι custom objects, καθώς και ένα dictionary, κάπως έτσι:&lt;br&gt;&lt;br&gt;Class MyObject : IEquatable&amp;lt;MyObject&amp;gt;{&lt;br&gt;&lt;br&gt;private MyType1 myType1;&lt;br&gt;private MyType2 myType2;&lt;br&gt;..&lt;br&gt;private Dictionary&amp;lt;MyTypeX, MyTypeY&amp;gt; myDictionary=new Dictionary&amp;lt;MyTypeX, MyTypeY&amp;gt;();&lt;br&gt;}&lt;br&gt;&lt;br&gt;Σε όλα τα types έχω κάνει implement το IEquatable&amp;lt;T&amp;gt; και θέλω να κάνω το ίδιο και για το "MyObject". Θέλω το "Equals(MyObject other)" να επιστρέφει true όχι μόνο αν κάποια properties που με ενδιαφέρουν είναι ίδια, αλλά επιπλέον και όταν τα δύο Dictionaries περιέχουν τα ίδια KeyValuePairs. Μέχρις εδώ καλά. Στη συνέχεια κάνω override την "Equals(object obj)" και στο τέλος πρέπει να κάνω override την GetHashCode. Πως με συμβουλεύετε να το κάνω για να γίνει σωστά το implementation της GetHashCode;&lt;br&gt;&lt;br&gt;</description></item></channel></rss>