[{"data":1,"prerenderedAt":1063},["ShallowReactive",2],{"i-feather:search":3,"i-feather:x":8,"i-feather:moon":10,"i-feather:sun":12,"i-fa-brands:youtube":14,"i-fa-brands:twitch":18,"i-fa-brands:github":20,"i-fa-brands:linkedin":23,"i-fa-brands:stack-overflow":26,"i-simple-icons:bluesky":29,"i-fa-brands:mastodon":31,"i-fa-regular:envelope":33,"i-fa-solid:rss":35,"post-\u002Fgethashcode-made-easy\u002F":37,"post-navigation":658,"i-fa-solid:share-alt":1043,"i-fa-brands:facebook":1045,"i-fa-brands:twitter":1047,"i-fa-brands:reddit":1049,"i-fa-brands:patreon":1051,"i-simple-icons:buymeacoffee":1053,"i-fa-brands:paypal":1055,"i-fa-regular:question-circle":1057,"i-feather:arrow-left":1059,"i-feather:arrow-right":1061},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"11\" cy=\"11\" r=\"8\"\u002F>\u003Cpath d=\"m21 21l-4.35-4.35\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M18 6L6 18M6 6l12 12\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":11},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M21 12.79A9 9 0 1 1 11.21 3A7 7 0 0 0 21 12.79\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":13},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"5\"\u002F>\u003Cpath d=\"M12 1v2m0 18v2M4.22 4.22l1.42 1.42m12.72 12.72l1.42 1.42M1 12h2m18 0h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":15,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":17},576,512,"\u003Cpath fill=\"currentColor\" d=\"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597c-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821c11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305m-317.51 213.508V175.185l142.739 81.205z\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":19},"\u003Cpath fill=\"currentColor\" d=\"M391.17 103.47h-38.63v109.7h38.63ZM285 103h-38.63v109.75H285ZM120.83 0L24.31 91.42v329.16h115.83V512l96.53-91.42h77.25L487.69 256V0Zm328.24 237.75l-77.22 73.12h-77.24l-67.6 64v-64h-86.87V36.58h308.93Z\"\u002F>",{"left":4,"top":4,"width":21,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":22},496,"\u003Cpath fill=\"currentColor\" d=\"M165.9 397.4c0 2-2.3 3.6-5.2 3.6c-3.3.3-5.6-1.3-5.6-3.6c0-2 2.3-3.6 5.2-3.6c3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9c2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9c.3 2 2.9 3.3 5.9 2.6c2.9-.7 4.9-2.6 4.6-4.6c-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2c12.8 2.3 17.3-5.6 17.3-12.1c0-6.2-.3-40.4-.3-61.4c0 0-70 15-84.7-29.8c0 0-11.4-29.1-27.8-36.6c0 0-22.9-15.7 1.6-15.4c0 0 24.9 2 38.6 25.8c21.9 38.6 58.6 27.5 72.9 20.9c2.3-16 8.8-27.1 16-33.7c-55.9-6.2-112.3-14.3-112.3-110.5c0-27.5 7.6-41.3 23.6-58.9c-2.6-6.5-11.1-33.3 2.6-67.9c20.9-6.5 69 27 69 27c20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27c13.7 34.7 5.2 61.4 2.6 67.9c16 17.7 25.8 31.5 25.8 58.9c0 96.5-58.9 104.2-114.8 110.5c9.2 7.9 17 22.9 17 46.4c0 33.7-.3 75.4-.3 83.6c0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252C496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2c1.6 1.6 3.9 2.3 5.2 1c1.3-1 1-3.3-.7-5.2c-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9c1.6 1 3.6.7 4.3-.7c.7-1.3-.3-2.9-2.3-3.9c-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2c2.3 2.3 5.2 2.6 6.5 1c1.3-1.3.7-4.3-1.3-6.2c-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2c-1.4-2.3-4-3.3-5.6-2\"\u002F>",{"left":4,"top":4,"width":24,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":25},448,"\u003Cpath fill=\"currentColor\" d=\"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5c0 21.3-17.2 38.5-38.5 38.5m282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7c-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5c67.2 0 79.7 44.3 79.7 101.9z\"\u002F>",{"left":4,"top":4,"width":27,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":28},384,"\u003Cpath fill=\"currentColor\" d=\"M290.7 311L95 269.7L86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8l153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24l119.3 160.3l32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":30},"\u003Cpath fill=\"currentColor\" d=\"M5.202 2.857C7.954 4.922 10.913 9.11 12 11.358c1.087-2.247 4.046-6.436 6.798-8.501C20.783 1.366 24 .213 24 3.883c0 .732-.42 6.156-.667 7.037c-.856 3.061-3.978 3.842-6.755 3.37c4.854.826 6.089 3.562 3.422 6.299c-5.065 5.196-7.28-1.304-7.847-2.97c-.104-.305-.152-.448-.153-.327c0-.121-.05.022-.153.327c-.568 1.666-2.782 8.166-7.847 2.97c-2.667-2.737-1.432-5.473 3.422-6.3c-2.777.473-5.899-.308-6.755-3.369C.42 10.04 0 4.615 0 3.883c0-3.67 3.217-2.517 5.202-1.026\"\u002F>",{"left":4,"top":4,"width":24,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":32},"\u003Cpath fill=\"currentColor\" d=\"M433 179.11c0-97.2-63.71-125.7-63.71-125.7c-62.52-28.7-228.56-28.4-290.48 0c0 0-63.72 28.5-63.72 125.7c0 115.7-6.6 259.4 105.63 289.1c40.51 10.7 75.32 13 103.33 11.4c50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.5 102.5 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7c56.12-6.7 105-41.3 111.23-72.9c9.8-49.8 9-121.5 9-121.5m-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175c25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5l11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1c23.71 27.3 18.4 53 18.4 175z\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":34},"\u003Cpath fill=\"currentColor\" d=\"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48m0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49c-16.841 13.247-50.201 45.072-73.413 44.701c-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646c21.857 17.205 60.134 55.186 103.062 54.955c42.717.231 80.509-37.199 103.053-54.947c49.528-38.783 82.032-64.401 104.947-82.653V400z\"\u002F>",{"left":4,"top":4,"width":24,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":36},"\u003Cpath fill=\"currentColor\" d=\"M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041s64.04 28.673 64.04 64.041m175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018c111.832 7.284 201.473 96.702 208.772 208.772c.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79m144.249.288C439.596 229.677 251.465 40.445 16.503 32.01C7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999c191.179 7.839 344.627 161.316 352.465 352.465c.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504\"\u002F>",{"id":38,"title":39,"author":40,"body":41,"comments":432,"date":636,"dateModified":637,"description":638,"extension":639,"headings":640,"heroImage":647,"meta":648,"path":649,"permalink":649,"published":650,"stem":651,"tags":652,"timeToRead":657},"posts\u002Fposts\u002F2014\u002Fgethashcode-made-easy\u002Findex.md","GetHashCode Made Easy","Muhammad Rehan Saeed",{"type":42,"value":43,"toc":429},"minimark",[44,72,82,96,107,131,137,144,160,163,166,185,195,198,208,211,223,236,251,257,287,301,316,323,326,340,343,346,360,366,382,385,399,413,425],[45,46,50,56],"div",{"className":47},[48,49],"custom-block","tip",[51,52,55],"p",{"className":53},[54],"custom-block-title","Update (2021-10-22)",[51,57,58,59,63,64,67,68,71],{},"Updated after I discovered that there is a new Nuget package called ",[60,61,62],"code",{},"Microsoft.Bcl.HashCode"," which allows you to use ",[60,65,66],{},"System.HashCode"," in frameworks older than ",[60,69,70],{},"netstandard2.1",".",[45,73,75,79],{"className":74},[48,49],[51,76,78],{"className":77},[54],"Update (2019-06-12)",[51,80,81],{},"I updated my HashCode implementation to cover a few more scenarios which I discuss below.",[45,83,85,89],{"className":84},[48,49],[51,86,88],{"className":87},[54],"Update (2018-08-14)",[51,90,91,92,95],{},"I updated this article to talk about a new ",[60,93,94],{},"HashCode"," class included in .NET Core 2.1 and licensing information for my code since I've been asked repeatedly.",[51,97,98,99,102,103,106],{},"Implementing ",[60,100,101],{},"GetHashCode"," is hard work and little understood. If you take a look on MSDN or Stack Overflow for a few pointers, you'll see a plethora of examples with all kinds of little used C# operators and magic numbers with little explanation for developers (Especially the newbies) what they are for and why we need them. This, for a method which exists on the ",[60,104,105],{},"Object"," class and is the root of all that is good and wholesome in C# is surprising.",[51,108,109,110,120,121,123,124,126,127,130],{},"Before I continue, I recommend reading ",[111,112,119],"a",{"href":113,"rel":114,"target":118},"http:\u002F\u002Fblogs.msdn.com\u002Fb\u002Fericlippert\u002Farchive\u002F2011\u002F02\u002F28\u002Fguidelines-and-rules-for-gethashcode.aspx",[115,116,117],"nofollow","noopener","noreferrer","_blank","Eric Lippert's blog post"," about the subject. He does not show any code, just goes into when and where we need to implement the ",[60,122,101],{}," method. Eric does a much better job than I could do but in short, ",[60,125,101],{}," is implemented wherever you implement the ",[60,128,129],{},"Equals"," method and ideally your class should be immutable.",[51,132,133,134,136],{},"Now down to the nitty gritty. How do we make implementing ",[60,135,101],{}," easy. Well, suppose we have the following class:",[138,139],"pre",{"className":140,"language":141,"meta":142,"style":142,"html":143},"language-cs shiki shiki-themes light-plus monokai","cs","","\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">public\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> sealed\u003C\u002Fspan>\u003Cspan class=\"s4J9F\"> class\u003C\u002Fspan>\u003Cspan class=\"sw29p\"> SuperHero\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">{\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    private\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> readonly\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> string\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> name\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    private\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> readonly\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> int\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> age\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    private\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> readonly\u003C\u002Fspan>\u003Cspan class=\"sw29p\"> ReadOnlyCollection\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sJvqV\">string\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&gt; \u003C\u002Fspan>\u003Cspan class=\"sFrd5\">powers\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    public\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> SuperHero\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sJvqV\">string\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> name\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">, \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">int\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> age\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">, \u003C\u002Fspan>\u003Cspan class=\"sw29p\">IEnumerable\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sJvqV\">string\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&gt; \u003C\u002Fspan>\u003Cspan class=\"sFrd5\">powers\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">)\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">    {\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sK46n\">        this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">name\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> =\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> name\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sK46n\">        this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">age\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> =\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> age\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sK46n\">        this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">powers\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> =\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> new\u003C\u002Fspan>\u003Cspan class=\"sw29p\"> ReadOnlyCollection\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sJvqV\">string\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&gt;(\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">powers\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">ToList\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">());\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">    }\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    public\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> int\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> Age\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> =&gt;\u003C\u002Fspan>\u003Cspan class=\"sK46n\"> this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">age\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    public\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> string\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> Name\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> =&gt;\u003C\u002Fspan>\u003Cspan class=\"sK46n\"> this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">name\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    public\u003C\u002Fspan>\u003Cspan class=\"sw29p\"> ReadOnlyCollection\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sJvqV\">string\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&gt; \u003C\u002Fspan>\u003Cspan class=\"sFrd5\">Powers\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> =&gt;\u003C\u002Fspan>\u003Cspan class=\"sK46n\"> this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">powers\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    public\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> override\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> bool\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> Equals\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sJvqV\">object\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> obj\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">)\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">    {\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">        \u002F\u002F ...\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">    }\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    public\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> override\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> int\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> GetHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">()\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">    {\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">        \u002F\u002F TODO\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">    }\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">}\n\u003C\u002Fspan>\u003C\u002Fspan>",[51,145,146,147,149,150,155,156,159],{},"In our example we have an immutable object with a variety of fields of different types, including a collection. One possible implementation of ",[60,148,101],{}," according to the highest rated ",[111,151,154],{"href":152,"rel":153,"target":118},"http:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F263400\u002Fwhat-is-the-best-algorithm-for-an-overridden-system-object-gethashcode\u002F263416#263416",[115,116,117],"Stack Overflow post"," (If modified to fit our example and deal with ",[60,157,158],{},"null","'s) may be:",[138,161],{"className":140,"language":141,"meta":142,"style":142,"html":162},"\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">public\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> override\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> int\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> GetHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">()\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">{\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"smL5M\">    unchecked\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">    {\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">        int\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> hashCode\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> =\u003C\u002Fspan>\u003Cspan class=\"s0PsH\"> 17\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sFrd5\">        hashCode\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> =\u003C\u002Fspan>\u003Cspan class=\"sjLUg\"> (\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">hashCode\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> *\u003C\u002Fspan>\u003Cspan class=\"s0PsH\"> 23\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">) \u003C\u002Fspan>\u003Cspan class=\"snCLD\">+\u003C\u002Fspan>\u003Cspan class=\"sjLUg\"> (\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">name\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> ==\u003C\u002Fspan>\u003Cspan class=\"sMc8R\"> null\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> ?\u003C\u002Fspan>\u003Cspan class=\"s0PsH\"> 0\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> :\u003C\u002Fspan>\u003Cspan class=\"sK46n\"> this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">name\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">GetHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">());\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sFrd5\">        hashCode\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> =\u003C\u002Fspan>\u003Cspan class=\"sjLUg\"> (\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">hashCode\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> *\u003C\u002Fspan>\u003Cspan class=\"s0PsH\"> 23\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">) \u003C\u002Fspan>\u003Cspan class=\"snCLD\">+\u003C\u002Fspan>\u003Cspan class=\"sK46n\"> this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">age\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"smL5M\">        foreach\u003C\u002Fspan>\u003Cspan class=\"sjLUg\"> (\u003C\u002Fspan>\u003Cspan class=\"sJvqV\">string\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> power\u003C\u002Fspan>\u003Cspan class=\"smL5M\"> in\u003C\u002Fspan>\u003Cspan class=\"sK46n\"> this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">powers\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">)\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">        {\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sFrd5\">            hashCode\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> =\u003C\u002Fspan>\u003Cspan class=\"sjLUg\"> (\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">hashCode\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> *\u003C\u002Fspan>\u003Cspan class=\"s0PsH\"> 23\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">) \u003C\u002Fspan>\u003Cspan class=\"snCLD\">+\u003C\u002Fspan>\u003Cspan class=\"sjLUg\"> (\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">power\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> ==\u003C\u002Fspan>\u003Cspan class=\"sMc8R\"> null\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> ?\u003C\u002Fspan>\u003Cspan class=\"s0PsH\"> 0\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> :\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> power\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">GetHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">());\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">        }\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"smL5M\">        return\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> hashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">    }\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">}\n\u003C\u002Fspan>\u003C\u002Fspan>",[51,164,165],{},"I don't know about you but that code looks awfully unwieldy to me. For a start we've got two different magic numbers 17 and 23. Why? As it happens these are prime numbers and reduces the chance of getting collisions between hashes (Two un-equal objects are supposed to have different hash codes but sometimes this is not the case due to hash collisions that can occur).",[51,167,168,169,172,173,175,176,179,180,184],{},"We've also got the ",[60,170,171],{},"unchecked"," C# keyword which stops overflow checking to improve performance (That's not something you see every day). Bear in mind that the whole point of the ",[60,174,101],{}," method is to allow things like the ",[60,177,178],{},"Dictionary"," type to ",[181,182,183],"strong",{},"quickly"," retrieve objects.",[51,186,187,188,190,191,194],{},"I personally would not be able to remember how to do this each time I need to implement ",[60,189,101],{}," and it seems like you could very easily introduce bugs by making a typo. How about a helper class (Well actually a ",[60,192,193],{},"struct"," for better performance)?",[138,196],{"className":140,"language":141,"meta":142,"style":142,"html":197},"\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">\u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">\u002F\u002F\u002F A hash code used to help with implementing \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">see\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> cref\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"object.GetHashCode()\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">\u002F&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">\u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">public\u003C\u002Fspan>\u003Cspan class=\"s4J9F\"> struct\u003C\u002Fspan>\u003Cspan class=\"sw29p\"> HashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\"> : \u003C\u002Fspan>\u003Cspan class=\"sw29p\">IEquatable\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sw29p\">HashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">{\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    private\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> const\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> int\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> EmptyCollectionPrimeNumber\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> =\u003C\u002Fspan>\u003Cspan class=\"s0PsH\"> 19\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    private\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> readonly\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> int\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> value\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F Initializes a new instance of the \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">see\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> cref\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"HashCode\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">\u002F&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\"> struct.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> name\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"value\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The value.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    private\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> HashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sJvqV\">int\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> value\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">) \u003C\u002Fspan>\u003Cspan class=\"snCLD\">=&gt;\u003C\u002Fspan>\u003Cspan class=\"sK46n\"> this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">value\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> =\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> value\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F Performs an implicit conversion from \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">see\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> cref\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"HashCode\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">\u002F&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\"> to \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">see\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> cref\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"int\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">\u002F&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> name\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"hashCode\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The hash code.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">returns\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The result of the conversion.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">returns\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    public\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> static\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> implicit\u003C\u002Fspan>\u003Cspan class=\"s4J9F\"> operator\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> int\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sw29p\">HashCode\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> hashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">) \u003C\u002Fspan>\u003Cspan class=\"snCLD\">=&gt;\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> hashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">value\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F Implements the operator ==.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> name\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"left\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The left.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> name\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"right\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The right.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">returns\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The result of the operator.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">returns\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    public\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> static\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> bool\u003C\u002Fspan>\u003Cspan class=\"s4J9F\"> operator\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> ==\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sw29p\">HashCode\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> left\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">, \u003C\u002Fspan>\u003Cspan class=\"sw29p\">HashCode\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> right\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">) \u003C\u002Fspan>\u003Cspan class=\"snCLD\">=&gt;\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> left\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">Equals\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">right\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">);\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F Implements the operator !=.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> name\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"left\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The left.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> name\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"right\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The right.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">returns\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The result of the operator.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">returns\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    public\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> static\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> bool\u003C\u002Fspan>\u003Cspan class=\"s4J9F\"> operator\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> !=\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sw29p\">HashCode\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> left\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">, \u003C\u002Fspan>\u003Cspan class=\"sw29p\">HashCode\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> right\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">) \u003C\u002Fspan>\u003Cspan class=\"snCLD\">=&gt;\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> !\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">left\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> ==\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> right\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">);\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F Takes the hash code of the specified item.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">typeparam\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> name\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"T\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The type of the item.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">typeparam\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> name\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"item\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The item.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">returns\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The new hash code.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">returns\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    public\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> static\u003C\u002Fspan>\u003Cspan class=\"sw29p\"> HashCode\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> Of\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sw29p\">T\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&gt;(\u003C\u002Fspan>\u003Cspan class=\"sw29p\">T\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> item\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">) \u003C\u002Fspan>\u003Cspan class=\"snCLD\">=&gt;\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> new\u003C\u002Fspan>\u003Cspan class=\"sw29p\"> HashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">GetHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">item\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">));\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F Takes the hash code of the specified items.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">typeparam\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> name\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"T\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The type of the items.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">typeparam\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> name\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"items\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The collection.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">returns\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The new hash code.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">returns\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    public\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> static\u003C\u002Fspan>\u003Cspan class=\"sw29p\"> HashCode\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> OfEach\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sw29p\">T\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&gt;(\u003C\u002Fspan>\u003Cspan class=\"sw29p\">IEnumerable\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sw29p\">T\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&gt; \u003C\u002Fspan>\u003Cspan class=\"sFrd5\">items\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">) \u003C\u002Fspan>\u003Cspan class=\"snCLD\">=&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sFrd5\">        items\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> ==\u003C\u002Fspan>\u003Cspan class=\"sMc8R\"> null\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> ?\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> new\u003C\u002Fspan>\u003Cspan class=\"sw29p\"> HashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"s0PsH\">0\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">) \u003C\u002Fspan>\u003Cspan class=\"snCLD\">:\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> new\u003C\u002Fspan>\u003Cspan class=\"sw29p\"> HashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">GetHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">items\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">, \u003C\u002Fspan>\u003Cspan class=\"s0PsH\">0\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">));\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F Adds the hash code of the specified item.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">typeparam\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> name\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"T\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The type of the item.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">typeparam\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> name\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"item\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The item.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">returns\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The new hash code.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">returns\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    public\u003C\u002Fspan>\u003Cspan class=\"sw29p\"> HashCode\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> And\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sw29p\">T\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&gt;(\u003C\u002Fspan>\u003Cspan class=\"sw29p\">T\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> item\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">) \u003C\u002Fspan>\u003Cspan class=\"snCLD\">=&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">        new\u003C\u002Fspan>\u003Cspan class=\"sw29p\"> HashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">CombineHashCodes\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sK46n\">this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">value\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">, \u003C\u002Fspan>\u003Cspan class=\"sWm5y\">GetHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">item\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">)));\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F Adds the hash code of the specified items in the collection.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">typeparam\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> name\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"T\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The type of the items.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">typeparam\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> name\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"items\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The collection.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">param\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">returns\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">The new hash code.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">returns\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    public\u003C\u002Fspan>\u003Cspan class=\"sw29p\"> HashCode\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> AndEach\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sw29p\">T\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&gt;(\u003C\u002Fspan>\u003Cspan class=\"sw29p\">IEnumerable\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sw29p\">T\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&gt; \u003C\u002Fspan>\u003Cspan class=\"sFrd5\">items\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">)\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">    {\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"smL5M\">        if\u003C\u002Fspan>\u003Cspan class=\"sjLUg\"> (\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">items\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> ==\u003C\u002Fspan>\u003Cspan class=\"sMc8R\"> null\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">)\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">        {\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"smL5M\">            return\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> new\u003C\u002Fspan>\u003Cspan class=\"sw29p\"> HashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sK46n\">this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">value\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">);\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">        }\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"smL5M\">        return\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> new\u003C\u002Fspan>\u003Cspan class=\"sw29p\"> HashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">GetHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">items\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">, \u003C\u002Fspan>\u003Cspan class=\"sK46n\">this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">value\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">));\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">    }\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">inheritdoc\u003C\u002Fspan>\u003Cspan class=\"sOBmp\"> \u002F&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    public\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> bool\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> Equals\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sw29p\">HashCode\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> other\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">) \u003C\u002Fspan>\u003Cspan class=\"snCLD\">=&gt;\u003C\u002Fspan>\u003Cspan class=\"sK46n\"> this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">value\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">Equals\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">other\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">value\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">);\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">inheritdoc\u003C\u002Fspan>\u003Cspan class=\"sOBmp\"> \u002F&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    public\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> override\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> bool\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> Equals\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sJvqV\">object\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> obj\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">)\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">    {\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"smL5M\">        if\u003C\u002Fspan>\u003Cspan class=\"sjLUg\"> (\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">obj\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> is\u003C\u002Fspan>\u003Cspan class=\"sw29p\"> HashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">)\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">        {\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"smL5M\">            return\u003C\u002Fspan>\u003Cspan class=\"sK46n\"> this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">Equals\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">((\u003C\u002Fspan>\u003Cspan class=\"sw29p\">HashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">)\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">obj\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">);\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">        }\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"smL5M\">        return\u003C\u002Fspan>\u003Cspan class=\"sMc8R\"> false\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">    }\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F Throws \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">see\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> cref\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"NotSupportedException\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\"> \u002F&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">summary\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">returns\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">Does not return.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">returns\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">    \u002F\u002F\u002F \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">exception\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> cref\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"NotSupportedException\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\">Implicitly convert this struct to an \u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">see\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> cref\u003C\u002Fspan>\u003Cspan class=\"s1q82\">=\u003C\u002Fspan>\u003Cspan class=\"swiDo\">\"int\"\u003C\u002Fspan>\u003Cspan class=\"sOBmp\"> \u002F&gt;\u003C\u002Fspan>\u003Cspan class=\"s1q82\"> to get the hash code.\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">exception\u003C\u002Fspan>\u003Cspan class=\"sOBmp\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">    [\u003C\u002Fspan>\u003Cspan class=\"sw29p\">EditorBrowsable\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">EditorBrowsableState\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">Never\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">)]\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    public\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> override\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> int\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> GetHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">() \u003C\u002Fspan>\u003Cspan class=\"snCLD\">=&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"smL5M\">        throw\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> new\u003C\u002Fspan>\u003Cspan class=\"sw29p\"> NotSupportedException\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"swiDo\">            \"Implicitly convert this struct to an int to get the hash code.\"\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">);\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    private\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> static\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> int\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> CombineHashCodes\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sJvqV\">int\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> h1\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">, \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">int\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> h2\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">)\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">    {\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"smL5M\">        unchecked\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">        {\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">            \u002F\u002F Code copied from System.Tuple so it must be the best way to combine hash codes or at least a good one.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"smL5M\">            return\u003C\u002Fspan>\u003Cspan class=\"sjLUg\"> ((\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">h1\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> &lt;&lt;\u003C\u002Fspan>\u003Cspan class=\"s0PsH\"> 5\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">) \u003C\u002Fspan>\u003Cspan class=\"snCLD\">+\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> h1\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">) \u003C\u002Fspan>\u003Cspan class=\"snCLD\">^\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> h2\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">        }\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">    }\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    private\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> static\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> int\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> GetHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sw29p\">T\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&gt;(\u003C\u002Fspan>\u003Cspan class=\"sw29p\">T\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> item\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">) \u003C\u002Fspan>\u003Cspan class=\"snCLD\">=&gt;\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> item\u003C\u002Fspan>\u003Cspan class=\"snCLD\">?\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">GetHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">() \u003C\u002Fspan>\u003Cspan class=\"snCLD\">??\u003C\u002Fspan>\u003Cspan class=\"s0PsH\"> 0\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">    private\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> static\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> int\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> GetHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sw29p\">T\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&gt;(\u003C\u002Fspan>\u003Cspan class=\"sw29p\">IEnumerable\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sw29p\">T\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">&gt; \u003C\u002Fspan>\u003Cspan class=\"sFrd5\">items\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">, \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">int\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> startHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">)\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">    {\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s4J9F\">        var\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> temp\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> =\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> startHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s4J9F\">        var\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> enumerator\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> =\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> items\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">GetEnumerator\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">();\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"smL5M\">        if\u003C\u002Fspan>\u003Cspan class=\"sjLUg\"> (\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">enumerator\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">MoveNext\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">())\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">        {\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sFrd5\">            temp\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> =\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> CombineHashCodes\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">temp\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">, \u003C\u002Fspan>\u003Cspan class=\"sWm5y\">GetHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">enumerator\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">Current\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">));\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"smL5M\">            while\u003C\u002Fspan>\u003Cspan class=\"sjLUg\"> (\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">enumerator\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">MoveNext\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">())\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">            {\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sFrd5\">                temp\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> =\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> CombineHashCodes\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">temp\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">, \u003C\u002Fspan>\u003Cspan class=\"sWm5y\">GetHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">enumerator\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">Current\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">));\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">            }\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">        }\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"smL5M\">        else\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">        {\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sFrd5\">            temp\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> =\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> CombineHashCodes\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">temp\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">, \u003C\u002Fspan>\u003Cspan class=\"sFrd5\">EmptyCollectionPrimeNumber\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">);\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">        }\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"smL5M\">        return\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> temp\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">    }\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">}\n\u003C\u002Fspan>\u003C\u002Fspan>",[51,199,200,201,203,204,207],{},"The helper ",[60,202,193],{}," can be used in our ",[60,205,206],{},"SuperHero"," class like so:",[138,209],{"className":140,"language":141,"meta":142,"style":142,"html":210},"\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">public\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> override\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> int\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> GetHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">()\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">{\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"smL5M\">    return\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> HashCode\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">        .\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">Of\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sK46n\">this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">name\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">)\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">        .\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">And\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sK46n\">this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">age\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">)\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">        .\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">AndEach\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sK46n\">this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">powers\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">);\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">}\n\u003C\u002Fspan>\u003C\u002Fspan>",[51,212,213,214,216,217,219,220,222],{},"Now isn't that pretty? All the nasty magic numbers and ",[60,215,171],{}," code has been hidden away. It is a very lightweight and simple ",[60,218,193],{},", so although we create new instances of it, it's stored in the stack rather than the memory heap. What's more, is that is code is just as fast (I've timed it)! We're using generics so there is no boxing or unboxing going on. We're still using the ",[60,221,171],{}," keyword, so overflow checking is still disabled.",[51,224,225,226,228,229,231,232,235],{},"One interesting edge case is what to do when hashing a collection and you get either a ",[60,227,158],{}," or empty collection. Should you use a zero to represent both scenarios (zero is usually used to represent a ",[60,230,158],{}," value) or differentiate them somehow. I managed to get a response from ",[111,233,234],{"href":142},"Jon Skeet"," himself on Stack Overflow:",[237,238,239,242],"blockquote",{},[51,240,241],{},"if both states are valid, it seems perfectly reasonable to differentiate between them. (Someone carrying an empty box isn't the same as someone not carrying a box at all...)",[243,244,245],"footer",{},[246,247,248],"cite",{},[111,249,234],{"href":250},"https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F8094867\u002Fgood-gethashcode-override-for-list-of-foo-objects-respecting-the-order\u002F8094931?noredirect=1#comment99700237_8094931",[51,252,253,254,256],{},"This is why we use the prime number 19 (it could have been any prime number) to represent an empty collection. Whether this matters or not depends on your use case. If an empty collection means something different in your scenario, then we've got you covered. Generally speaking though, if you are exposing a collection property in your class you should consider making it a getter only and initializing it in the constructor, so that it is never ",[60,255,158],{}," in the first place but here we're trying to cover all scenarios.",[258,259,261,267],"h1",{"id":260,"data-section-heading":142},"net-core-hashcode",[262,263,266],"span",{"className":264},[265],"heading__text",".NET Core HashCode",[268,269,272],"anchor-link",{"href":270,"label":271},"#net-core-hashcode","Link to this section",[273,274,281],"svg",{"xmlns":275,"xmlns:xlink":276,"viewBox":277,"version":278,"width":279,"height":279,"aria-hidden":280},"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxlink","0 0 16 16","1.1",22,"true",[282,283],"path",{"fill":284,"fill-rule":285,"d":286},"currentColor","evenodd","M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z",[51,288,289,290,294,295,297,298,300],{},"If you are using .NET Core 2.1, consider using the ",[111,291,66],{"href":292,"rel":293,"target":118},"https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Fdotnet\u002Fapi\u002Fsystem.hashcode?view=netcore-2.1",[115,116,117]," ",[60,296,193],{}," instead of my code. If your using an older framework you can also try the ",[60,299,62],{}," NuGet package. There are two ways to use it:",[302,303,305,309],"h2",{"id":304,"data-section-heading":142},"hashcodecombine",[262,306,308],{"className":307},[265],"HashCode.Combine",[268,310,312],{"href":311,"label":271},"#hashcodecombine",[273,313,314],{"xmlns":275,"xmlns:xlink":276,"viewBox":277,"version":278,"width":279,"height":279,"aria-hidden":280},[282,315],{"fill":284,"fill-rule":285,"d":286},[51,317,318,319,322],{},"The ",[60,320,321],{},"Combine"," method can be used to create a hash code, given up to eight objects.",[138,324],{"className":140,"language":141,"meta":142,"style":142,"html":325},"\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">public\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> override\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> int\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> GetHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">() \u003C\u002Fspan>\u003Cspan class=\"snCLD\">=&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sFrd5\">    HashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">Combine\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">object1\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">, \u003C\u002Fspan>\u003Cspan class=\"sFrd5\">object2\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">);\n\u003C\u002Fspan>\u003C\u002Fspan>",[302,327,329,333],{"id":328,"data-section-heading":142},"hashcodeadd",[262,330,332],{"className":331},[265],"HashCode.Add",[268,334,336],{"href":335,"label":271},"#hashcodeadd",[273,337,338],{"xmlns":275,"xmlns:xlink":276,"viewBox":277,"version":278,"width":279,"height":279,"aria-hidden":280},[282,339],{"fill":284,"fill-rule":285,"d":286},[51,341,342],{},"The Add method is similar to my code but it does not handle collections and is not fluent:",[138,344],{"className":140,"language":141,"meta":142,"style":142,"html":345},"\u003Cspan class=\"line\">\u003Cspan class=\"sJvqV\">public\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> override\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> int\u003C\u002Fspan>\u003Cspan class=\"sWm5y\"> GetHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">()\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">{\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s4J9F\">    var\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> hash\u003C\u002Fspan>\u003Cspan class=\"snCLD\"> =\u003C\u002Fspan>\u003Cspan class=\"sJvqV\"> new\u003C\u002Fspan>\u003Cspan class=\"sw29p\"> HashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">();\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sFrd5\">    hash\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">Add\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sK46n\">this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">object1\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">);\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sFrd5\">    hash\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">Add\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">(\u003C\u002Fspan>\u003Cspan class=\"sK46n\">this\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sFrd5\">object2\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">);\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"smL5M\">    return\u003C\u002Fspan>\u003Cspan class=\"sFrd5\"> hash\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">.\u003C\u002Fspan>\u003Cspan class=\"sWm5y\">ToHashCode\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">();\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">}\n\u003C\u002Fspan>\u003C\u002Fspan>",[302,347,349,353],{"id":348,"data-section-heading":142},"advantages-and-disadvantages",[262,350,352],{"className":351},[265],"Advantages and Disadvantages",[268,354,356],{"href":355,"label":271},"#advantages-and-disadvantages",[273,357,358],{"xmlns":275,"xmlns:xlink":276,"viewBox":277,"version":278,"width":279,"height":279,"aria-hidden":280},[282,359],{"fill":284,"fill-rule":285,"d":286},[51,361,362,363,365],{},"There are several advantages to using the .NET Core ",[60,364,94],{},":",[367,368,369,373,376],"ul",{},[370,371,372],"li",{},"It's part of the .NET Core base class library (BCL), so it's maintained and officially supported.",[370,374,375],{},"It has good performance. I haven't written a benchmark against comparing my code to the .NET Core code. If you do, I'd be interested to hear the results.",[370,377,378,379,381],{},"Like my code, it handles ",[60,380,158],{},"'s automatically.",[51,383,384],{},"The disadvantages are:",[367,386,387,390,393],{},[370,388,389],{},"You have to be using .NET Core 2.1 or above.",[370,391,392],{},"It does not handle collections, you have to write a for loop to handle that yourself. You could be clever and write a quick extension method to handle this scenario.",[370,394,395,396,398],{},"It's not fluent, so you end up with slightly uglier code in my opinion. If you are a fan of C# 7 expression bodied members, then my fluent code lets you use them, while the .NET Core ",[60,397,332],{}," method does not.",[258,400,402,406],{"id":401,"data-section-heading":142},"license",[262,403,405],{"className":404},[265],"License",[268,407,409],{"href":408,"label":271},"#license",[273,410,411],{"xmlns":275,"xmlns:xlink":276,"viewBox":277,"version":278,"width":279,"height":279,"aria-hidden":280},[282,412],{"fill":284,"fill-rule":285,"d":286},[51,414,415,416,421,422,424],{},"I have been asked repeatedly for licensing of my code above. Developers have been asking permission to use it in a Kerbal Space program plugin and even in the excellent ",[111,417,420],{"href":418,"rel":419,"target":118},"https:\u002F\u002Fchocolatey.org",[115,116,117],"Chocolatey"," project which has been totally unexpected for me because this is code I wrote years ago. It just goes to show how fundamental ",[60,423,101],{}," is. Please consider the code as MIT licensed, do good with it and be excellent to each other!",[426,427,428],"style",{},"html pre.shiki code .sJvqV, html code.shiki .sJvqV{--shiki-default:#0000FF;--shiki-dark:#F92672}html pre.shiki code .s4J9F, html code.shiki .s4J9F{--shiki-default:#0000FF;--shiki-default-font-style:inherit;--shiki-dark:#66D9EF;--shiki-dark-font-style:italic}html pre.shiki code .sw29p, html code.shiki .sw29p{--shiki-default:#267F99;--shiki-default-text-decoration:inherit;--shiki-dark:#A6E22E;--shiki-dark-text-decoration:underline}html pre.shiki code .sjLUg, html code.shiki .sjLUg{--shiki-default:#000000;--shiki-dark:#F8F8F2}html pre.shiki code .sFrd5, html code.shiki .sFrd5{--shiki-default:#001080;--shiki-dark:#F8F8F2}html pre.shiki code .sWm5y, html code.shiki .sWm5y{--shiki-default:#795E26;--shiki-dark:#A6E22E}html pre.shiki code .sK46n, html code.shiki .sK46n{--shiki-default:#0000FF;--shiki-dark:#FD971F}html pre.shiki code .snCLD, html code.shiki .snCLD{--shiki-default:#000000;--shiki-dark:#F92672}html pre.shiki code .s1q82, html code.shiki .s1q82{--shiki-default:#008000;--shiki-dark:#88846F}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .smL5M, html code.shiki .smL5M{--shiki-default:#AF00DB;--shiki-dark:#F92672}html pre.shiki code .s0PsH, html code.shiki .s0PsH{--shiki-default:#098658;--shiki-dark:#AE81FF}html pre.shiki code .sMc8R, html code.shiki .sMc8R{--shiki-default:#0000FF;--shiki-dark:#AE81FF}html pre.shiki code .sOBmp, html code.shiki .sOBmp{--shiki-default:#800000;--shiki-dark:#88846F}html pre.shiki code .sjbfc, html code.shiki .sjbfc{--shiki-default:#800000;--shiki-dark:#F92672}html pre.shiki code .snDo4, html code.shiki .snDo4{--shiki-default:#E50000;--shiki-dark:#A6E22E}html pre.shiki code .swiDo, html code.shiki .swiDo{--shiki-default:#A31515;--shiki-dark:#E6DB74}",{"title":142,"searchDepth":430,"depth":430,"links":431},2,[],{"issue":433,"comments":437},{"number":434,"title":435,"html_url":436},78,"[Comment] GetHashCode Made Easy","https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78",[438,450,458,466,474,482,490,498,506,514,522,530,538,546,554,562,570,579,587,596,604,612,620,628],{"id":439,"html_url":440,"body_html":441,"created_at":442,"updated_at":442,"author_association":443,"user":444,"reactions":448},627257881,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627257881","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Ff23b510c5bd9abf3b169d7eb542989720e1cfde88c6ba821712cf24625f3011f\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32353564393763643538626631383339646330613235386461353063626563393f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Nathan\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Ff23b510c5bd9abf3b169d7eb542989720e1cfde88c6ba821712cf24625f3011f\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32353564393763643538626631383339646330613235386461353063626563393f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"http:\u002F\u002Fphetteplace.net\u002F\">Nathan\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2014-06-13 12:52:08\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Very cool class!\u003C\u002Fp>","2020-05-12T10:32:33Z","OWNER",{"login":445,"avatar_url":446,"html_url":447},"RehanSaeed","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2270364?v=4","https:\u002F\u002Fgithub.com\u002FRehanSaeed",{"url":449,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627257881\u002Freactions",{"id":451,"html_url":452,"body_html":453,"created_at":454,"updated_at":454,"author_association":443,"user":455,"reactions":456},627257950,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627257950","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F05ad97290acd915837944dbd1bc7d1a44705bd35f3dfd6303c878edf7565acb1\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f65353865306662353832363230383864346132333566636163333535623338623f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Savvas\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F05ad97290acd915837944dbd1bc7d1a44705bd35f3dfd6303c878edf7565acb1\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f65353865306662353832363230383864346132333566636163333535623338623f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Savvas\u003C\u002Fstrong> commented on \u003Cstrong>2014-07-30 13:23:01\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Very very nice! Thank you.\u003C\u002Fp>","2020-05-12T10:32:40Z",{"login":445,"avatar_url":446,"html_url":447},{"url":457,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627257950\u002Freactions",{"id":459,"html_url":460,"body_html":461,"created_at":462,"updated_at":462,"author_association":443,"user":463,"reactions":464},627257997,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627257997","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F47f4048d96354725fa15b5767b1c8d071feb442e2f45021178c22c4a637ec967\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f34356132326632383337663464393833623738666334316637346432393832613f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Trenton McFarlane\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F47f4048d96354725fa15b5767b1c8d071feb442e2f45021178c22c4a637ec967\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f34356132326632383337663464393833623738666334316637346432393832613f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Trenton McFarlane\u003C\u002Fstrong> commented on \u003Cstrong>2016-07-27 02:18:55\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Very clean! Thank you! I've found but little help elsewhere on a clean implementation like this. Well done!\u003C\u002Fp>","2020-05-12T10:32:47Z",{"login":445,"avatar_url":446,"html_url":447},{"url":465,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627257997\u002Freactions",{"id":467,"html_url":468,"body_html":469,"created_at":470,"updated_at":470,"author_association":443,"user":471,"reactions":472},627258068,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627258068","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fb473a644a55ecc416dccb985841f16db84873d402da8746b5085727cb11b91d3\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f34386361663861663535623830653733316339353766353366383139323936323f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Leonid Efremov\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fb473a644a55ecc416dccb985841f16db84873d402da8746b5085727cb11b91d3\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f34386361663861663535623830653733316339353766353366383139323936323f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"http:\u002F\u002Fgreenday.me\u002F\">Leonid Efremov\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2017-09-06 11:51:07\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv>\u003Cpre>\u003Cspan>int\u003C\u002Fspan> \u003Cspan>hashCode\u003C\u002Fspan> \u003Cspan>=\u003C\u002Fspan> \u003Cspan>items\u003C\u002Fspan>\u003Cspan>.\u003C\u002Fspan>\u003Cspan>Select\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>x \u003Cspan>=&gt;\u003C\u002Fspan> \u003Cspan>GetHashCode\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>x\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>.\u003C\u002Fspan>\u003Cspan>Aggregate\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>x\u003C\u002Fspan>\u003Cspan>,\u003C\u002Fspan> \u003Cspan>y\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan> \u003Cspan>=&gt;\u003C\u002Fspan> \u003Cspan>CombineHashCodes\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>x\u003C\u002Fspan>\u003Cspan>,\u003C\u002Fspan> \u003Cspan>y\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>;\u003C\u002Fspan>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>Will get Exception for empty array, maybe this is better to use:\u003C\u002Fp>\n\u003Cdiv>\u003Cpre>\u003Cspan>var\u003C\u002Fspan> \u003Cspan>hashCode\u003C\u002Fspan> \u003Cspan>=\u003C\u002Fspan> \u003Cspan>items\u003C\u002Fspan>\u003Cspan>.\u003C\u002Fspan>\u003Cspan>Any\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan> \u003Cspan>?\u003C\u002Fspan> \u003Cspan>items\u003C\u002Fspan>\u003Cspan>.\u003C\u002Fspan>\u003Cspan>Select\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>GetHashCode\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>.\u003C\u002Fspan>\u003Cspan>Aggregate\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>CombineHashCodes\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan> \u003Cspan>:\u003C\u002Fspan> \u003Cspan>0\u003C\u002Fspan>\u003Cspan>;\u003C\u002Fspan>\u003C\u002Fpre>\u003C\u002Fdiv>","2020-05-12T10:32:54Z",{"login":445,"avatar_url":446,"html_url":447},{"url":473,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627258068\u002Freactions",{"id":475,"html_url":476,"body_html":477,"created_at":478,"updated_at":478,"author_association":443,"user":479,"reactions":480},627258121,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627258121","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2017-09-12 15:28:06\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cdiv>\u003Cpre>\u003Cspan>int\u003C\u002Fspan> \u003Cspan>hashCode\u003C\u002Fspan> \u003Cspan>=\u003C\u002Fspan> \u003Cspan>items\u003C\u002Fspan>\u003Cspan>.\u003C\u002Fspan>\u003Cspan>Select\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>x \u003Cspan>=&gt;\u003C\u002Fspan> \u003Cspan>GetHashCode\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>x\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>.\u003C\u002Fspan>\u003Cspan>Aggregate\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>x\u003C\u002Fspan>\u003Cspan>,\u003C\u002Fspan> \u003Cspan>y\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan> \u003Cspan>=&gt;\u003C\u002Fspan> \u003Cspan>CombineHashCodes\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>x\u003C\u002Fspan>\u003Cspan>,\u003C\u002Fspan> \u003Cspan>y\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>;\u003C\u002Fspan>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>Will get Exception for empty array, maybe this is better to use:\u003C\u002Fp>\n\u003Cdiv>\u003Cpre>\u003Cspan>var\u003C\u002Fspan> \u003Cspan>hashCode\u003C\u002Fspan> \u003Cspan>=\u003C\u002Fspan> \u003Cspan>items\u003C\u002Fspan>\u003Cspan>.\u003C\u002Fspan>\u003Cspan>Any\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan> \u003Cspan>?\u003C\u002Fspan> \u003Cspan>items\u003C\u002Fspan>\u003Cspan>.\u003C\u002Fspan>\u003Cspan>Select\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>GetHashCode\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>.\u003C\u002Fspan>\u003Cspan>Aggregate\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>CombineHashCodes\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan> \u003Cspan>:\u003C\u002Fspan> \u003Cspan>0\u003C\u002Fspan>\u003Cspan>;\u003C\u002Fspan>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003C\u002Fblockquote>\n\u003Cp>Thanks, I've updated the post.\u003C\u002Fp>","2020-05-12T10:33:01Z",{"login":445,"avatar_url":446,"html_url":447},{"url":481,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627258121\u002Freactions",{"id":483,"html_url":484,"body_html":485,"created_at":486,"updated_at":486,"author_association":443,"user":487,"reactions":488},627258167,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627258167","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fbf6140a10ae75572bf02f201f2111dcc360ad4547cf6ad06ab499324f3757918\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f34643732363561363365386364633561643862313531323961663137643435383f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Crispin\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fbf6140a10ae75572bf02f201f2111dcc360ad4547cf6ad06ab499324f3757918\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f34643732363561363365386364633561643862313531323961663137643435383f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Crispin\u003C\u002Fstrong> commented on \u003Cstrong>2018-01-09 14:30:51\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Thanks, I've updated the post.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Suggested correction is missing a null check on items. \u003Ccode>Enumerable.Any\u003C\u002Fcode> will null check argument and throw.\u003C\u002Fp>","2020-05-12T10:33:08Z",{"login":445,"avatar_url":446,"html_url":447},{"url":489,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627258167\u002Freactions",{"id":491,"html_url":492,"body_html":493,"created_at":494,"updated_at":494,"author_association":443,"user":495,"reactions":496},627258220,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627258220","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2018-01-23 11:51:52\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Suggested correction is missing a null check on items. \u003Ccode>Enumerable.Any\u003C\u002Fcode> will null check argument and throw.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Added your suggestion. Thanks.\u003C\u002Fp>","2020-05-12T10:33:16Z",{"login":445,"avatar_url":446,"html_url":447},{"url":497,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627258220\u002Freactions",{"id":499,"html_url":500,"body_html":501,"created_at":502,"updated_at":502,"author_association":443,"user":503,"reactions":504},627258288,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627258288","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fd7f40c21d6f174d224803c670843e47c4b643ee5f84de9e8210be4d637b9172f\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f30633466356633386437393236306130316332356464656636353830623166333f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Union\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fd7f40c21d6f174d224803c670843e47c4b643ee5f84de9e8210be4d637b9172f\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f30633466356633386437393236306130316332356464656636353830623166333f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Union\u003C\u002Fstrong> commented on \u003Cstrong>2018-03-24 01:45:03\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Very cool! You should make this a nuget package\u003C\u002Fp>","2020-05-12T10:33:23Z",{"login":445,"avatar_url":446,"html_url":447},{"url":505,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627258288\u002Freactions",{"id":507,"html_url":508,"body_html":509,"created_at":510,"updated_at":510,"author_association":443,"user":511,"reactions":512},627258352,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627258352","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F82f2a0c5eb4948a3a088b493862a923cbc1165092c4a9d50d76685f61a305e0d\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f35653035653835383337323437613463373932396464613765396564303032623f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Simeon\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F82f2a0c5eb4948a3a088b493862a923cbc1165092c4a9d50d76685f61a305e0d\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f35653035653835383337323437613463373932396464613765396564303032623f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Simeon\u003C\u002Fstrong> commented on \u003Cstrong>2018-08-14 15:20:18\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>This struct is so great that it should go straight into the .NET Framework! Thank You, Rehan, for sharing it with us! However, I could not find any license information about it. Could you, please, let us know how we are allowed to use it.\u003C\u002Fp>","2020-05-12T10:33:30Z",{"login":445,"avatar_url":446,"html_url":447},{"url":513,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627258352\u002Freactions",{"id":515,"html_url":516,"body_html":517,"created_at":518,"updated_at":518,"author_association":443,"user":519,"reactions":520},627258400,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627258400","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2018-08-14 16:12:53\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>This struct is so great that it should go straight into the .NET Framework! Thank You, Rehan, for sharing it with us! However, I could not find any license information about it. Could you, please, let us know how we are allowed to use it.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Thanks! You are in fact the third person to ask about licensing. I have updated the blog post with information about a new helper available in .NET Core and also licensing information.\u003C\u002Fp>","2020-05-12T10:33:37Z",{"login":445,"avatar_url":446,"html_url":447},{"url":521,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627258400\u002Freactions",{"id":523,"html_url":524,"body_html":525,"created_at":526,"updated_at":526,"author_association":443,"user":527,"reactions":528},627258455,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627258455","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F816d4b143415d206aaef038d6c11cc578487b3b18a20fbc60dd2187941e3886a\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f61353530656562653963313439313134613166646536663433663061653837363f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Matt Whitfield\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F816d4b143415d206aaef038d6c11cc578487b3b18a20fbc60dd2187941e3886a\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f61353530656562653963313439313134613166646536663433663061653837363f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Matt Whitfield\u003C\u002Fstrong> commented on \u003Cstrong>2018-08-16 09:30:28\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Pretty sure this is wrong: 'Two equal objects are supposed to have the same hash code but sometimes this is not the case due to some maths that I'm not going to go into'. I think you mean 'Two objects that are not equal are supposed to have different hash codes'. Because having two objects that are equal and do not have the same hash code breaks equality.\u003C\u002Fp>","2020-05-12T10:33:44Z",{"login":445,"avatar_url":446,"html_url":447},{"url":529,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627258455\u002Freactions",{"id":531,"html_url":532,"body_html":533,"created_at":534,"updated_at":534,"author_association":443,"user":535,"reactions":536},627258520,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627258520","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2018-08-16 11:25:58\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Pretty sure this is wrong: 'Two equal objects are supposed to have the same hash code but sometimes this is not the case due to some maths that I'm not going to go into'. I think you mean 'Two objects that are not equal are supposed to have different hash codes'. Because having two objects that are equal and do not have the same hash code breaks equality.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Sometimes there are hash collisions where objects which are not equal to each other produce the same hash.\u003C\u002Fp>","2020-05-12T10:33:51Z",{"login":445,"avatar_url":446,"html_url":447},{"url":537,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627258520\u002Freactions",{"id":539,"html_url":540,"body_html":541,"created_at":542,"updated_at":542,"author_association":443,"user":543,"reactions":544},627258579,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627258579","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fe55e8b8ce4a9c51dc6211dc3a5222dc9341621243d6d8d4b773c4228209597ac\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f64393361636135643761663139366136333639663237343330383537366338393f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Brandon\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fe55e8b8ce4a9c51dc6211dc3a5222dc9341621243d6d8d4b773c4228209597ac\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f64393361636135643761663139366136333639663237343330383537366338393f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Brandon\u003C\u002Fstrong> commented on \u003Cstrong>2018-08-16 12:32:08\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Sometimes there are hash collisions where objects which are not equal to each other produce the same hash.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Hi, great post and thanks for it, for clarification I thought Matt was indicating a possible need to update the article. I also think \"Two equal objects are supposed to have the same hash code but sometimes this is not the case due to some maths that I'm not going to go into\" is stated incorrectly. Two equal objects do indeed have the same hash. We are assuming you meant \"Two un-equal objects are supposed to have different hash codes but sometimes this is not the case, a hash collision, due to some maths that I'm not going to go into\". By definition equal objects can't have unequal hashes, correct?\u003C\u002Fp>","2020-05-12T10:33:58Z",{"login":445,"avatar_url":446,"html_url":447},{"url":545,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627258579\u002Freactions",{"id":547,"html_url":548,"body_html":549,"created_at":550,"updated_at":550,"author_association":443,"user":551,"reactions":552},627258658,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627258658","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F7b7d704ce3af7fa18aefea20738fca14517c423c4c92ec1925b2034faa3040ce\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f66353339363633356338386536666537653933626533333630333031633266343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Matt Whitfield\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F7b7d704ce3af7fa18aefea20738fca14517c423c4c92ec1925b2034faa3040ce\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f66353339363633356338386536666537653933626533333630333031633266343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Matt Whitfield\u003C\u002Fstrong> commented on \u003Cstrong>2018-08-16 13:27:04\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Sometimes there are hash collisions where objects which are not equal to each other produce the same hash.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>So might be an idea to update the phrase that's wrong above then?\u003C\u002Fp>","2020-05-12T10:34:05Z",{"login":445,"avatar_url":446,"html_url":447},{"url":553,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627258658\u002Freactions",{"id":555,"html_url":556,"body_html":557,"created_at":558,"updated_at":558,"author_association":443,"user":559,"reactions":560},627258715,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627258715","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2018-08-16 14:55:21\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>So might be an idea to update the phrase that's wrong above then?\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>I re-read your comment and yes, you are totally right. Updated, thank you!\u003C\u002Fp>","2020-05-12T10:34:13Z",{"login":445,"avatar_url":446,"html_url":447},{"url":561,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627258715\u002Freactions",{"id":563,"html_url":564,"body_html":565,"created_at":566,"updated_at":566,"author_association":443,"user":567,"reactions":568},627258779,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627258779","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F9222113868de708a9dc91360acd77a531a7ab2b17a0cd5c0dbb22a431aa5b8ae\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f62373263303138333435373234656534653336623163666130326233643733323f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Nadav\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F9222113868de708a9dc91360acd77a531a7ab2b17a0cd5c0dbb22a431aa5b8ae\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f62373263303138333435373234656534653336623163666130326233643733323f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Nadav\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-11 15:01:56\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Shouldn't:\u003C\u002Fp>\n\u003Cdiv>\u003Cpre>\u003Cspan>public\u003C\u002Fspan> \u003Cspan>HashCode\u003C\u002Fspan> \u003Cspan>AndEach\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>IEnumerable\u003C\u002Fspan> \u003Cspan>items\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>\u003C\u002Fspan>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>Be:\u003C\u002Fp>\n\u003Cdiv>\u003Cpre>\u003Cspan>public\u003C\u002Fspan> \u003Cspan>HashCode\u003C\u002Fspan> \u003Cspan>AndEach\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>IEnumerable\u003C\u002Fspan> \u003Cspan>items\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>\u003C\u002Fspan>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>Also, if you want the code to be as fast as possible, then you should not use Linq, using\u003C\u002Fp>\n\u003Cdiv>\u003Cpre>\u003Cspan>var\u003C\u002Fspan> \u003Cspan>temp\u003C\u002Fspan> \u003Cspan>=\u003C\u002Fspan> \u003Cspan>this\u003C\u002Fspan>\u003Cspan>.\u003C\u002Fspan>\u003Cspan>value\u003C\u002Fspan>\u003Cspan>;\u003C\u002Fspan>\n\u003Cspan>foreach\u003C\u002Fspan> \u003Cspan>(\u003C\u002Fspan>\u003Cspan>T\u003C\u002Fspan> \u003Cspan>item\u003C\u002Fspan> \u003Cspan>in\u003C\u002Fspan> \u003Cspan>items\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\n\u003Cspan>{\u003C\u002Fspan>\n    \u003Cspan>temp\u003C\u002Fspan> \u003Cspan>=\u003C\u002Fspan> \u003Cspan>CombineHashCodes\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>temp\u003C\u002Fspan>\u003Cspan>,\u003C\u002Fspan> \u003Cspan>GetHashCode\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>item\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>;\u003C\u002Fspan>\n\u003Cspan>}\u003C\u002Fspan>\n\u003Cspan>return\u003C\u002Fspan> \u003Cspan>new\u003C\u002Fspan> \u003Cspan>HashCode\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>temp\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>;\u003C\u002Fspan>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>Is much faster....\u003C\u002Fp>","2020-05-12T10:34:21Z",{"login":445,"avatar_url":446,"html_url":447},{"url":569,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627258779\u002Freactions",{"id":571,"html_url":572,"body_html":573,"created_at":574,"updated_at":575,"author_association":443,"user":576,"reactions":577},627258842,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627258842","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Ff2e6937475e029ddd8888e8614be47c92736ce60ad3c8b785f66525ed74267e7\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f34616538666262386637373432663364343631353134656239323165376238393f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Oliver\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Ff2e6937475e029ddd8888e8614be47c92736ce60ad3c8b785f66525ed74267e7\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f34616538666262386637373432663364343631353134656239323165376238393f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Oliver\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-14 09:46:36\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Just another idea (I used in my implementation): \u003Ccode>HashCode\u003C\u002Fcode> has to be fast and collisions for different objects are allowed (than \u003Ccode>Equals()\u003C\u002Fcode> has to be called). So for collection it is not always wise to iterate over all elements (maybe there are millions in there) and maybe it is just enough to consider the first n-elements for generating the hash code. So for this purpose it would be great to enhance the \u003Ccode>.AndEach()\u003C\u002Fcode> call to take a second optional number parameter \u003Ccode>AndEach(IEnumerable items, int count =10)\u003C\u002Fcode> which will simply be added to the LINQ statement as \u003Ccode>items.Take(count).Select(GetHashCode)\u003C\u002Fcode>. Within the usage you can then provide a meaningful number for your use-case. This update maybe changes existing implementations. To avoid this, the optional parameter could also be initialized with \u003Ccode>int.MaxValue\u003C\u002Fcode> to provide the current behaviour.\u003C\u002Fp>","2020-05-12T10:34:29Z","2020-05-12T12:04:57Z",{"login":445,"avatar_url":446,"html_url":447},{"url":578,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627258842\u002Freactions",{"id":580,"html_url":581,"body_html":582,"created_at":583,"updated_at":583,"author_association":443,"user":584,"reactions":585},627258900,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627258900","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-14 11:40:03\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Shouldn't:\u003C\u002Fp>\n\u003Cdiv>\u003Cpre>\u003Cspan>public\u003C\u002Fspan> \u003Cspan>HashCode\u003C\u002Fspan> \u003Cspan>AndEach\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>IEnumerable\u003C\u002Fspan> \u003Cspan>items\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>\u003C\u002Fspan>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>Be:\u003C\u002Fp>\n\u003Cdiv>\u003Cpre>\u003Cspan>public\u003C\u002Fspan> \u003Cspan>HashCode\u003C\u002Fspan> \u003Cspan>AndEach\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>IEnumerable\u003C\u002Fspan> \u003Cspan>items\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>\u003C\u002Fspan>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>Also, if you want the code to be as fast as possible, then you should not use Linq, using\u003C\u002Fp>\n\u003Cdiv>\u003Cpre>\u003Cspan>var\u003C\u002Fspan> \u003Cspan>temp\u003C\u002Fspan> \u003Cspan>=\u003C\u002Fspan> \u003Cspan>this\u003C\u002Fspan>\u003Cspan>.\u003C\u002Fspan>\u003Cspan>value\u003C\u002Fspan>\u003Cspan>;\u003C\u002Fspan>\n\u003Cspan>foreach\u003C\u002Fspan> \u003Cspan>(\u003C\u002Fspan>\u003Cspan>T\u003C\u002Fspan> \u003Cspan>item\u003C\u002Fspan> \u003Cspan>in\u003C\u002Fspan> \u003Cspan>items\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\n\u003Cspan>{\u003C\u002Fspan>\n    \u003Cspan>temp\u003C\u002Fspan> \u003Cspan>=\u003C\u002Fspan> \u003Cspan>CombineHashCodes\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>temp\u003C\u002Fspan>\u003Cspan>,\u003C\u002Fspan> \u003Cspan>GetHashCode\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>item\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>;\u003C\u002Fspan>\n\u003Cspan>}\u003C\u002Fspan>\n\u003Cspan>return\u003C\u002Fspan> \u003Cspan>new\u003C\u002Fspan> \u003Cspan>HashCode\u003C\u002Fspan>\u003Cspan>(\u003C\u002Fspan>\u003Cspan>temp\u003C\u002Fspan>\u003Cspan>)\u003C\u002Fspan>\u003Cspan>;\u003C\u002Fspan>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>Is much faster....\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Good point about not using Linq.\u003C\u002Fp>","2020-05-12T10:34:36Z",{"login":445,"avatar_url":446,"html_url":447},{"url":586,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627258900\u002Freactions",{"id":588,"html_url":589,"body_html":590,"created_at":591,"updated_at":592,"author_association":443,"user":593,"reactions":594},627258959,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627258959","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-14 11:41:37\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Just another idea (I used in my implementation): \u003Ccode>HashCode\u003C\u002Fcode> has to be fast and collisions for different objects are allowed (than \u003Ccode>Equals()\u003C\u002Fcode> has to be called). So for collection it is not always wise to iterate over all elements (maybe there are millions in there) and maybe it is just enough to consider the first n-elements for generating the hash code. So for this purpose it would be great to enhance the \u003Ccode>.AndEach()\u003C\u002Fcode> call to take a second optional number parameter \u003Ccode>AndEach(IEnumerable items, int count =10)\u003C\u002Fcode> which will simply be added to the LINQ statement as \u003Ccode>items.Take(count).Select(GetHashCode)\u003C\u002Fcode>. Within the usage you can then provide a meaningful number for your use-case. This update maybe changes existing implementations. To avoid this, the optional parameter could also be initialized with \u003Ccode>int.MaxValue\u003C\u002Fcode> to provide the current behaviour.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>That's an interesting idea. Not sure how often this use cases pops up.\u003C\u002Fp>","2020-05-12T10:34:43Z","2020-05-12T12:04:42Z",{"login":445,"avatar_url":446,"html_url":447},{"url":595,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627258959\u002Freactions",{"id":597,"html_url":598,"body_html":599,"created_at":600,"updated_at":600,"author_association":443,"user":601,"reactions":602},627259014,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627259014","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F1f1773638edb400870e5d82cbe58e885fd030ce2388bcfc6fbafefb595cf7fbc\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f65356563343664393566363531313630653333386434306435663834326633633f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Laksh\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F1f1773638edb400870e5d82cbe58e885fd030ce2388bcfc6fbafefb595cf7fbc\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f65356563343664393566363531313630653333386434306435663834326633633f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Laksh\u003C\u002Fstrong> commented on \u003Cstrong>2019-07-11 21:46:51\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Are any of the hash code methods you mentioned are deterministic? The \u003Ccode>HashCode\u003C\u002Fcode> class from .NET Core is not deterministic.\u003C\u002Fp>","2020-05-12T10:34:50Z",{"login":445,"avatar_url":446,"html_url":447},{"url":603,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627259014\u002Freactions",{"id":605,"html_url":606,"body_html":607,"created_at":608,"updated_at":608,"author_association":443,"user":609,"reactions":610},627259070,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627259070","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2019-07-16 10:14:47\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Are any of the hash code methods you mentioned are deterministic? The \u003Ccode>HashCode\u003C\u002Fcode> class from .NET Core is not deterministic.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>\u003Ccode>Object.GetHashCode\u003C\u002Fcode> returns different values every time an application is restarted. So it is not strictly deterministic and you should not rely on it being so. It sounds like you want to use one of the other hash algorithms in the cryptographic namespace which are deterministic.\u003C\u002Fp>","2020-05-12T10:34:56Z",{"login":445,"avatar_url":446,"html_url":447},{"url":611,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627259070\u002Freactions",{"id":613,"html_url":614,"body_html":615,"created_at":616,"updated_at":616,"author_association":443,"user":617,"reactions":618},627259136,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627259136","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fd1fbf0df29c9bf56237be7c3147dad4a170dfdff3140893567260d23ebbb9637\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f61363065313665663861316631383136343838326266626337643161316561313f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Nawfal\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fd1fbf0df29c9bf56237be7c3147dad4a170dfdff3140893567260d23ebbb9637\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f61363065313665663861316631383136343838326266626337643161316561313f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Nawfal\u003C\u002Fstrong> commented on \u003Cstrong>2020-05-06 20:36:52\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Hi Rehan, is your \u003Ccode>HashCode\u003C\u002Fcode> implementation published as a nuget package?\u003C\u002Fp>","2020-05-12T10:35:03Z",{"login":445,"avatar_url":446,"html_url":447},{"url":619,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627259136\u002Freactions",{"id":621,"html_url":622,"body_html":623,"created_at":624,"updated_at":624,"author_association":443,"user":625,"reactions":626},627259212,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627259212","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2020-05-07 12:48:30\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Hi Rehan, is your \u003Ccode>HashCode\u003C\u002Fcode> implementation published as a nuget package?\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>No. Maybe I'll add it though. Seems strange to do so for one simple class.\u003C\u002Fp>","2020-05-12T10:35:11Z",{"login":445,"avatar_url":446,"html_url":447},{"url":627,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627259212\u002Freactions",{"id":629,"html_url":630,"body_html":631,"created_at":632,"updated_at":632,"author_association":443,"user":633,"reactions":634},627259267,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F78#issuecomment-627259267","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fd1fbf0df29c9bf56237be7c3147dad4a170dfdff3140893567260d23ebbb9637\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f61363065313665663861316631383136343838326266626337643161316561313f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Nawfal\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fd1fbf0df29c9bf56237be7c3147dad4a170dfdff3140893567260d23ebbb9637\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f61363065313665663861316631383136343838326266626337643161316561313f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Nawfal\u003C\u002Fstrong> commented on \u003Cstrong>2020-05-07 19:34:39\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>No. Maybe I'll add it though. Seems strange to do so for one simple class.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Rehan, alright. Its not really required. I could just copy the class. Asking just in case..\u003C\u002Fp>","2020-05-12T10:35:19Z",{"login":445,"avatar_url":446,"html_url":447},{"url":635,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627259267\u002Freactions","2014-04-14T00:00:00+00:00","2019-06-12T00:00:00+00:00","Implementing GetHashCode is hard work and little understood. Learn how to implement GetHashCode as quickly and as simply as possible.","md",[641,643,644,645,646],{"depth":642,"value":266},1,{"depth":430,"value":308},{"depth":430,"value":332},{"depth":430,"value":352},{"depth":642,"value":405},"\u002Fimages\u002Fhero\u002FMicrosoft-.NET-1366x768.png",{},"\u002Fgethashcode-made-easy\u002F",true,"posts\u002F2014\u002Fgethashcode-made-easy\u002Findex",[653,654,655,656,101],".NET","Base Class Library","BCL","C#",8,[659,663,666,671,676,679,682,686,690,694,697,701,705,708,709,713,717,721,724,728,732,736,739,744,749,753,756,759,762,767,771,774,779,783,787,791,794,798,802,806,810,814,818,822,825,829,833,837,841,844,848,852,855,858,862,866,871,875,879,883,887,891,895,898,901,904,908,912,915,919,922,925,928,931,935,939,942,945,949,953,956,959,962,966,970,974,978,981,984,989,992,995,999,1002,1006,1010,1013,1017,1020,1023,1027,1031,1035,1039],{"title":660,"permalink":661,"heroImage":662,"timeToRead":642},"Just Start - The First Blog Post","\u002Fjust-start-the-first-blog-post\u002F","\u002Fimages\u002Fhero\u002FJust-Start-1366x768.png",{"title":664,"permalink":665,"heroImage":647,"timeToRead":430},"ConfigureAwait in Task Parallel Library (TPL)","\u002Fconfigureawait-task-parallel-library\u002F",{"title":667,"permalink":668,"heroImage":669,"timeToRead":670},"Stop The Brace Wars, Use StyleCop","\u002Fstop-brace-wars-use-stylecop\u002F","\u002Fimages\u002Fhero\u002FStyleCop-1366x768.png",3,{"title":672,"permalink":673,"heroImage":674,"timeToRead":675},"Reactive Extensions (Rx) - Part 1 - Replacing C# Events","\u002Freactive-extensions-part1-replacing-events\u002F","\u002Fimages\u002Fhero\u002FReactive-Extensions-1366x768.png",4,{"title":677,"permalink":678,"heroImage":674,"timeToRead":670},"Reactive Extensions (Rx) - Part 2 - Wrapping C# Events","\u002Freactive-extensions-part2-wrapping-events\u002F",{"title":680,"permalink":681,"heroImage":674,"timeToRead":430},"Reactive Extensions (Rx) - Part 3 - Naming Conventions","\u002Freactive-extensions-part3-naming-conventions\u002F",{"title":683,"permalink":684,"heroImage":685,"timeToRead":670},"WPF Metro Part 1 - Modern UI for WPF","\u002Fwpf-metro-part1-modern-ui-for-wpf\u002F","\u002Fimages\u002Fhero\u002FModern-UI-for-WPF-1366x768.png",{"title":687,"permalink":688,"heroImage":689,"timeToRead":670},"WPF Metro Part 2 - MahApps Metro","\u002Fwpf-metro-part2-mahapps-metro\u002F","\u002Fimages\u002Fhero\u002FMahApps-Metro-1366x768.png",{"title":691,"permalink":692,"heroImage":693,"timeToRead":670},"Windows 8.1 TouchScreen Gaming Laptops","\u002Fwindows-8-touchscreen-gaming-laptops\u002F","\u002Fimages\u002Fhero\u002FFry-Shutup-And-Take-My-Money-1366x768.png",{"title":695,"permalink":696,"heroImage":674,"timeToRead":670},"Reactive Extensions (Rx) - Part 4 - Replacing Timers","\u002Freactive-extensions-part4-replacing-timers\u002F",{"title":698,"permalink":699,"heroImage":700,"timeToRead":430},"WPF Metro Part 3 - Elysium","\u002Fwpf-metro-part3-elysium\u002F","\u002Fimages\u002Fhero\u002FElysium-1366x768.png",{"title":702,"permalink":703,"heroImage":704,"timeToRead":657},"WPF Metro Part 4 - Elysium Extra","\u002Fwpf-metro-part4-elysium-extra\u002F","\u002Fimages\u002Fhero\u002FElysium-Extra-1366x768.png",{"title":706,"permalink":707,"heroImage":674,"timeToRead":675},"Reactive Extensions (Rx) - Part 5 - Awaiting Observables","\u002Freactive-extensions-part5-awaiting-observables\u002F",{"title":39,"permalink":649,"heroImage":647,"timeToRead":657},{"title":710,"permalink":711,"heroImage":674,"timeToRead":712},"Reactive Extensions (Rx) - Part 6 - Task ToObservable","\u002Freactive-extensions-part6-task-toobservable\u002F",5,{"title":714,"permalink":715,"heroImage":716,"timeToRead":642},"Portable Class Library (PCL) version of NotificationsExtensions NuGet package","\u002Fportable-class-library-version-of-notificationsextensions-nuget-package\u002F","\u002Fimages\u002Fhero\u002FNuGet-1366x768.png",{"title":718,"permalink":719,"heroImage":720,"timeToRead":712},"Model-View-ViewModel (MVVM) - Part 1 - Overview","\u002Fmodel-view-viewmodel-mvvm-part1-overview\u002F","\u002Fimages\u002Fhero\u002FMVVM-1366x768.png",{"title":722,"permalink":723,"heroImage":720,"timeToRead":675},"Model-View-ViewModel (MVVM) - Part 2 - IDisposable","\u002Fmodel-view-viewmodel-mvvm-part2-idisposable\u002F",{"title":725,"permalink":726,"heroImage":720,"timeToRead":727},"Model-View-ViewModel (MVVM) - Part 3 - INotifyPropertyChanged","\u002Fmodel-view-viewmodel-mvvm-part3-inotifypropertychanged\u002F",11,{"title":729,"permalink":730,"heroImage":731,"timeToRead":670},"Naming Conventions","\u002Fnaming-conventions\u002F","\u002Fimages\u002Fhero\u002FNaming-Conventions-1366x768.png",{"title":733,"permalink":734,"heroImage":720,"timeToRead":735},"Model-View-ViewModel (MVVM) - Part 4 - INotifyDataErrorInfo","\u002Fmodel-view-viewmodel-mvvm-part4-inotifydataerrorinfo\u002F",12,{"title":737,"permalink":738,"heroImage":704,"timeToRead":675},"Elysium Extra 1.1 Released","\u002Felysium-extra-1-1-released\u002F",{"title":740,"permalink":741,"heroImage":742,"timeToRead":743},"ASP.NET Core Boilerplate","\u002Fasp-net-mvc-boilerplate\u002F","\u002Fimages\u002Fhero\u002FASP.NET-Core-Boilerplate-1366x768.png",7,{"title":745,"permalink":746,"heroImage":747,"timeToRead":748},"Internet Favicon Madness (Updated)","\u002Finternet-favicon-madness\u002F","\u002Fimages\u002Fhero\u002FFavicons-1366x768.png",17,{"title":750,"permalink":751,"heroImage":752,"timeToRead":743},"Custom Visual Studio Project Templates","\u002Fcustom-visual-studio-project-templates\u002F","\u002Fimages\u002Fhero\u002FVisual-Studio-1366x768.png",{"title":754,"permalink":755,"heroImage":752,"timeToRead":670},"Configuration File Transforms In Visual Studio Should Be Built In","\u002Fconfiguration-file-transforms-in-visual-studio-should-be-built-in\u002F",{"title":757,"permalink":758,"heroImage":742,"timeToRead":727},"Securing the ASP.NET MVC Web.config","\u002Fsecuring-the-aspnet-mvc-web-config\u002F",{"title":760,"permalink":761,"heroImage":674,"timeToRead":430},"Reactive Extensions (Rx) - Part 7 - Sample Events","\u002Freactive-extensions-part7-sample-events\u002F",{"title":763,"permalink":764,"heroImage":765,"timeToRead":766},"NWebSec ASP.NET MVC Security Through HTTP Headers","\u002Fnwebsec-asp-net-mvc-security-through-http-headers\u002F","\u002Fimages\u002Fhero\u002FNWebSec-1366x768.png",6,{"title":768,"permalink":769,"heroImage":770,"timeToRead":279},"Content Security Policy (CSP) for ASP.NET MVC","\u002Fcontent-security-policy-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FContent-Security-Policy-CSP-for-ASP.NET-MVC-1366x768.png",{"title":772,"permalink":773,"heroImage":647,"timeToRead":712},"C# 6.0 - Saving Developers From Themselves","\u002Fc-6-0-saving-developers-from-themselves\u002F",{"title":775,"permalink":776,"heroImage":777,"timeToRead":778},"Building RSS\u002FAtom Feeds for ASP.NET MVC","\u002Fbuilding-rssatom-feeds-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FRSS-And-Atom-1366x768.png",19,{"title":780,"permalink":781,"heroImage":782,"timeToRead":727},"Canonical URL's for ASP.NET MVC","\u002Fcanonical-urls-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FLink-Juice-1366x768.png",{"title":784,"permalink":785,"heroImage":786,"timeToRead":675},"Dynamically Generating Robots.txt Using ASP.NET MVC","\u002Fdynamically-generating-robots-txt-using-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FRobots.txt-1366x768.jpg",{"title":788,"permalink":789,"heroImage":790,"timeToRead":675},"Minifying HTML for ASP.NET MVC","\u002Fminifying-html-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FThe-Internet-Is-A-Series-Of-Tubes-1366x768.jpg",{"title":792,"permalink":793,"heroImage":742,"timeToRead":430},"Whats New in ASP.NET Core Boilerplate","\u002Fwhats-new-in-asp-net-5-mvc-6-boilerplate\u002F",{"title":795,"permalink":796,"heroImage":797,"timeToRead":743},"Dynamically Generating Sitemap.xml for ASP.NET MVC","\u002Fdynamically-generating-sitemap-xml-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FSitemaps-1366x768.png",{"title":799,"permalink":800,"heroImage":801,"timeToRead":430},"So I've Been Awarded Microsoft MVP Status!","\u002Fso-ive-been-awarded-microsoft-mvp-status\u002F","\u002Fimages\u002Fhero\u002FMicrosoft-MVP-1366x768.png",{"title":803,"permalink":804,"heroImage":805,"timeToRead":642},".NET Big-O Algorithm Complexity Cheat Sheet","\u002Fnet-big-o-algorithm-complexity-cheat-sheet\u002F","\u002Fimages\u002Fhero\u002FNET-Big-O-Algorithm-Complexity-Cheat-Sheet-1366x768.jpg",{"title":807,"permalink":808,"heroImage":809,"timeToRead":670},"Logging with Serilog.Exceptions","\u002Flogging-with-serilog-exceptions\u002F","\u002Fimages\u002Fhero\u002FSerilog.Exceptions-1366x768.png",{"title":811,"permalink":812,"heroImage":813,"timeToRead":642},"Make Certificate","\u002Fmake-certificate\u002F","\u002Fimages\u002Fhero\u002FMake-Certificate-1366x768.png",{"title":815,"permalink":816,"heroImage":817,"timeToRead":430},"Colorful.Console","\u002Fcolorful-console\u002F","\u002Fimages\u002Fhero\u002FColorful.Console-1366x768.png",{"title":819,"permalink":820,"heroImage":821,"timeToRead":670},"Subresource Integrity TagHelper Using ASP.NET Core - Part 1","\u002Fsubresource-integrity-taghelper-using-asp-net-core\u002F","\u002Fimages\u002Fhero\u002FMake-Security-Easy-1366x768.png",{"title":823,"permalink":824,"heroImage":821,"timeToRead":675},"Subresource Integrity TagHelper Using ASP.NET Core - Part 2","\u002Fsubresource-integrity-taghelper-using-asp-net-core-part-2\u002F",{"title":826,"permalink":827,"heroImage":828,"timeToRead":712},"Social TagHelpers for ASP.NET Core","\u002Fsocial-taghelpers-for-asp-net-core\u002F","\u002Fimages\u002Fhero\u002FSocial-Media-1366x768.png",{"title":830,"permalink":831,"heroImage":832,"timeToRead":766},"Azure Active Directory Versus Identity Server","\u002Fazure-active-directory-versus-identity-server\u002F","\u002Fimages\u002Fhero\u002FAzure-Active-Directory-Versus-Identity-Server-1366x768.png",{"title":834,"permalink":835,"heroImage":836,"timeToRead":430},"ASP.NET Core Fluent Interface Extensions","\u002Fasp-net-core-fluent-interface-extensions\u002F","\u002Fimages\u002Fhero\u002FFluent-Interface-All-The-Things-1366x768.png",{"title":838,"permalink":839,"heroImage":840,"timeToRead":727},"NGINX for ASP.NET Core In-Depth","\u002Fnginx-asp-net-core-depth\u002F","\u002Fimages\u002Fhero\u002FNGINX-1366x768.png",{"title":842,"permalink":843,"heroImage":647,"timeToRead":430},"The Dotnet Watch Tool","\u002Fthe-dotnet-watch-tool\u002F",{"title":845,"permalink":846,"heroImage":847,"timeToRead":675},"Making Application Insights Fast & Secure","\u002Fmaking-application-insights-fast-and-secure\u002F","\u002Fimages\u002Fhero\u002FApplication-Insights-1366x768.png",{"title":849,"permalink":850,"heroImage":851,"timeToRead":743},"SEO Friendly URL's for ASP.NET Core","\u002Fseo-friendly-urls-asp-net-core\u002F","\u002Fimages\u002Fhero\u002FSearch-Engine-Optimization-SEO-1366x768.png",{"title":853,"permalink":854,"heroImage":674,"timeToRead":642},"Reactive Extensions (Rx) - Part 8 - Timeouts","\u002Freactive-extensions-rx-part-8-timeouts\u002F",{"title":856,"permalink":857,"heroImage":647,"timeToRead":675},"Custom Project Templates Using dotnet new","\u002Fcustom-project-templates-using-dotnet-new\u002F",{"title":859,"permalink":860,"heroImage":861,"timeToRead":657},"Cross-Platform DevOps for .NET Core","\u002Fcross-platform-devops-net-core\u002F","\u002Fimages\u002Fhero\u002FDotnet-Cake-AppVeyor-Travis-1366x768.png",{"title":863,"permalink":864,"heroImage":865,"timeToRead":743},"Cleaning Up CSPROJ","\u002Fcleaning-up-csproj\u002F","\u002Fimages\u002Fhero\u002FCleaning-Up-CSPROJ-1366x768.png",{"title":867,"permalink":868,"heroImage":869,"timeToRead":870},"dotnet new Feature Selection","\u002Fdotnet-new-feature-selection\u002F","\u002Fimages\u002Fhero\u002FWho-Wants-To-Be-A-Millionaire-1366x768.png",9,{"title":872,"permalink":873,"heroImage":874,"timeToRead":675},"ASP.NET Core Lazy Command Pattern","\u002Fasp-net-core-lazy-command-pattern\u002F","\u002Fimages\u002Fhero\u002FASP.NET-Core-Lazy-Command-Pattern-1366x768.png",{"title":876,"permalink":877,"heroImage":878,"timeToRead":430},"Structured Data using Schema.NET","\u002Fstructured-data-using-schema-net\u002F","\u002Fimages\u002Fhero\u002FSchema.NET-1366x768.png",{"title":880,"permalink":881,"heroImage":882,"timeToRead":766},"Keeping Up With Software Development","\u002Fkeeping-software-development\u002F","\u002Fimages\u002Fhero\u002FKeeping-up-with-Software-Development-1366x768.png",{"title":884,"permalink":885,"heroImage":886,"timeToRead":430},"A Very Generic .editorconfig File (Updated)","\u002Fgeneric-editorconfig-file\u002F","\u002Fimages\u002Fhero\u002FA-Very-Generic-Editorconfig-File-1366x768.png",{"title":888,"permalink":889,"heroImage":890,"timeToRead":712},"ASP.NET Core Caching in Practice","\u002Fasp-net-core-caching-in-practice\u002F","\u002Fimages\u002Fhero\u002FASP.NET-Core-Caching-in-Practice-1366x768.png",{"title":892,"permalink":893,"heroImage":894,"timeToRead":642},"Docker Read-Only File Systems","\u002Fdocker-read-file-systems\u002F","\u002Fimages\u002Fhero\u002FDocker-1366x768.png",{"title":896,"permalink":897,"heroImage":894,"timeToRead":670},"Docker Labels in Depth","\u002Fdocker-labels-depth\u002F",{"title":899,"permalink":900,"heroImage":894,"timeToRead":675},"Useful Docker Images - Part 1","\u002Fuseful-docker-images-part1\u002F",{"title":902,"permalink":903,"heroImage":894,"timeToRead":712},"Useful Docker Images - Part 2","\u002Fuseful-docker-images-part2\u002F",{"title":905,"permalink":906,"heroImage":907,"timeToRead":675},"Writing your Webpack configuration in TypeScript","\u002Fwriting-your-webpack-configuration-in-typescript\u002F","\u002Fimages\u002Fhero\u002FTypeScript-1366x768.png",{"title":909,"permalink":910,"heroImage":911,"timeToRead":712},"Writing Code while Asleep","\u002Fwriting-code-asleep\u002F","\u002Fimages\u002Fhero\u002FWhile-Alive-Eat-Sleep-Code-Repeat-1366x768.png",{"title":913,"permalink":914,"heroImage":647,"timeToRead":430},"The Dotnet Watch Tool Revisited","\u002Fthe-dotnet-watch-tool-revisited\u002F",{"title":916,"permalink":917,"heroImage":918,"timeToRead":430},".NET Boxed","\u002Fnet-boxed\u002F","\u002Fimages\u002Fhero\u002FDotnet-Boxed-1366x768.png",{"title":920,"permalink":921,"heroImage":647,"timeToRead":430},"Migrating to Entity Framework Core Seed Data","\u002Fmigrating-to-entity-framework-core-seed-data\u002F",{"title":923,"permalink":924,"heroImage":647,"timeToRead":670},"Optimally Configuring Entity Framework Core","\u002Foptimally-configuring-entity-framework-core\u002F",{"title":926,"permalink":927,"heroImage":647,"timeToRead":642},"ASP.NET Core Hidden Gem - QueryHelpers","\u002Fasp-net-core-hidden-gem-queryhelpers\u002F",{"title":929,"permalink":930,"heroImage":647,"timeToRead":870},"Optimally Configuring ASP.NET Core HttpClientFactory","\u002Foptimally-configuring-asp-net-core-httpclientfactory\u002F",{"title":932,"permalink":933,"heroImage":934,"timeToRead":743},"PluralSight vs LinkedIn Learning vs FrontendMasters vs Egghead.io vs YouTube","\u002Fpluralsight-vs-linkedin-learning-vs-frontendmasters-vs-egghead-io-vs-youtube\u002F","\u002Fimages\u002Fhero\u002FOnline-Learning-1366x768.png",{"title":936,"permalink":937,"heroImage":938,"timeToRead":870},"Is ASP.NET Core now a Mature Platform?","\u002Fis-asp-net-core-now-a-mature-platform\u002F","\u002Fimages\u002Fhero\u002FRocket-1366x768.jpg",{"title":940,"permalink":941,"heroImage":918,"timeToRead":870},"A Simple and Fast Object Mapper","\u002Fa-simple-and-fast-object-mapper\u002F",{"title":943,"permalink":944,"heroImage":894,"timeToRead":642},"Securing ASP.NET Core in Docker","\u002Fsecuring-asp-net-core-in-docker\u002F",{"title":946,"permalink":947,"heroImage":948,"timeToRead":675},"Git Cloning the Windows OS Repo","\u002Fgit-cloning-the-windows-os-repo\u002F","\u002Fimages\u002Fhero\u002FWindows-1366x768.png",{"title":950,"permalink":951,"heroImage":952,"timeToRead":743},".gitattributes Best Practices","\u002Fgitattributes-best-practices\u002F","\u002Fimages\u002Fhero\u002FGit-1366x768.png",{"title":954,"permalink":955,"heroImage":647,"timeToRead":670},"Unit Testing dotnet new Templates","\u002Funit-testing-dotnet-new-templates\u002F",{"title":957,"permalink":958,"heroImage":918,"timeToRead":712},"What dotnet new Could Be","\u002Fwhat-dotnet-new-could-be\u002F",{"title":960,"permalink":961,"heroImage":647,"timeToRead":675},"ASP.NET Core Integration Testing & Mocking using Moq","\u002Fasp-net-core-integration-testing-mocking-using-moq\u002F",{"title":963,"permalink":964,"heroImage":965,"timeToRead":743},"Choosing a Static Site Generator","\u002Fchoosing-a-static-site-generator\u002F","\u002Fimages\u002Fhero\u002FStatic-Site-Generators-1600x900.png",{"title":967,"permalink":968,"heroImage":969,"timeToRead":430},"Spicing up your Browser Console","\u002Fspicing-up-your-browser-console\u002F","\u002Fimages\u002Fhero\u002FFiglet-Fonts-1600x900.png",{"title":971,"permalink":972,"heroImage":973,"timeToRead":712},"Racism in Software Development & Beyond","\u002Fracism-in-software-development-and-beyond\u002F","\u002Fimages\u002Fhero\u002FBlack-Glowing-Fist-1600x900.png",{"title":975,"permalink":976,"heroImage":977,"timeToRead":712},"The Easiest Way to Version NuGet Packages","\u002Fthe-easiest-way-to-version-nuget-packages\u002F","\u002Fimages\u002Fhero\u002FSemantic-Versioning-1600x900.png",{"title":979,"permalink":980,"heroImage":716,"timeToRead":766},"The Fastest NuGet Package Ever Published (Probably)","\u002Fthe-fastest-nuget-package-ever-published-probably\u002F",{"title":982,"permalink":983,"heroImage":647,"timeToRead":670},"Automating .NET Security Updates","\u002Fautomating-dotnet-security-updates\u002F",{"title":985,"permalink":986,"heroImage":987,"timeToRead":988},"Deep Dive into Open Telemetry for .NET","\u002Fdeep-dive-into-open-telemetry-for-net\u002F","\u002Fimages\u002Fhero\u002FOpen-Telemetry-1600x900.png",10,{"title":990,"permalink":991,"heroImage":987,"timeToRead":670},"Open Telemetry for ASP.NET Core","\u002Fopen-telemetry-for-asp-net-core\u002F",{"title":993,"permalink":994,"heroImage":987,"timeToRead":670},"Exporting Open Telemetry Data to Jaeger","\u002Fexporting-open-telemetry-data-to-jaeger\u002F",{"title":996,"permalink":997,"heroImage":998,"timeToRead":670},"A System for Grouping & Sorting CSS Properties","\u002Fsystem-for-grouping-and-sorting-css-properties\u002F","\u002Fimages\u002Fhero\u002FCSS-1600x900.png",{"title":1000,"permalink":1001,"heroImage":998,"timeToRead":766},"CSS General Rules of Thumb","\u002Fcss-general-rules-of-thumb\u002F",{"title":1003,"permalink":1004,"heroImage":1005,"timeToRead":675},"Web Component Custom Element Gotchas","\u002Fweb-component-custom-element-gotchas\u002F","\u002Fimages\u002Fhero\u002FWeb-Components-1600x900.png",{"title":1007,"permalink":1008,"heroImage":1009,"timeToRead":430},"Code Coverage & Frontend Testing","\u002Fcode-coverage-and-frontend-testing\u002F","\u002Fimages\u002Fhero\u002FJest-Cypress-1600x900.png",{"title":1011,"permalink":1012,"heroImage":752,"timeToRead":642},".NET Boxed Visual Studio Integration","\u002Fdotnet-boxed-visual-studio-integration\u002F",{"title":1014,"permalink":1015,"heroImage":1016,"timeToRead":670},"The Windows Package Manager","\u002Fwindows-package-manager\u002F","\u002Fimages\u002Fhero\u002FWinget-1600x900.png",{"title":1018,"permalink":1019,"heroImage":647,"timeToRead":670},"The Problem with C# 10 Implicit Usings","\u002Fthe-problem-with-csharp-10-implicit-usings\u002F",{"title":1021,"permalink":1022,"heroImage":987,"timeToRead":675},"Optimally Configuring Open Telemetry Tracing for ASP.NET Core","\u002Foptimally-configuring-open-telemetry-tracing-for-asp-net-core\u002F",{"title":1024,"permalink":1025,"heroImage":1026,"timeToRead":430},"Live Streaming .NET","\u002Flive-streaming-dotnet\u002F","\u002Fimages\u002Fhero\u002FMy-YouTube-1920x1080.jpg",{"title":1028,"permalink":1029,"heroImage":1030,"timeToRead":430},"I Was Awarded as an Open UK Honouree","\u002Fopen-uk-honouree\u002F","\u002Fimages\u002Fhero\u002FOpen-UK-Honours-1366x768.jpg",{"title":1032,"permalink":1033,"heroImage":1034,"timeToRead":675},"On the Etiquette of Pull Request Comments","\u002Fon-the-etiquette-of-pull-request-comments\u002F","\u002Fimages\u002Fhero\u002FPrecious-PR-1600x900.jpg",{"title":1036,"permalink":1037,"heroImage":1038,"timeToRead":642},"AI Gone Rogue","\u002Fai-gone-rogue\u002F","\u002Fimages\u002Fhero\u002FHAL-9000-Prop-1600x900.png",{"title":1040,"permalink":1041,"heroImage":1042,"timeToRead":712},"AI Learnings from Upgrading My Blog","\u002Fai-learnings-from-upgrading-my-blog\u002F","\u002Fimages\u002Fhero\u002FAI-Agents-Upgrading-a-Blog-With-Human-Code-Review-1600x900.png",{"left":4,"top":4,"width":24,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1044},"\u003Cpath fill=\"currentColor\" d=\"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.55 96.55 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.3 96.3 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96s-42.981-96-96-96\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1046},"\u003Cpath fill=\"currentColor\" d=\"M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48c27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1048},"\u003Cpath fill=\"currentColor\" d=\"M459.37 151.716c.325 4.548.325 9.097.325 13.645c0 138.72-105.583 298.558-298.558 298.558c-59.452 0-114.68-17.219-161.137-47.106c8.447.974 16.568 1.299 25.34 1.299c49.055 0 94.213-16.568 130.274-44.832c-46.132-.975-84.792-31.188-98.112-72.772c6.498.974 12.995 1.624 19.818 1.624c9.421 0 18.843-1.3 27.614-3.573c-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319c-28.264-18.843-46.781-51.005-46.781-87.391c0-19.492 5.197-37.36 14.294-52.954c51.655 63.675 129.3 105.258 216.365 109.807c-1.624-7.797-2.599-15.918-2.599-24.04c0-57.828 46.782-104.934 104.934-104.934c30.213 0 57.502 12.67 76.67 33.137c23.715-4.548 46.456-13.32 66.599-25.34c-7.798 24.366-24.366 44.833-46.132 57.827c21.117-2.273 41.584-8.122 60.426-16.243c-14.292 20.791-32.161 39.308-52.628 54.253\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1050},"\u003Cpath fill=\"currentColor\" d=\"M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6c0-13.8 11.1-24.9 24.9-24.9c13.6 0 24.6 11.1 24.6 24.9c0 13.6-11.1 24.6-24.6 24.6M504 256c0 137-111 248-248 248S8 393 8 256S119 8 256 8s248 111 248 248m-132.3-41.2c-9.4 0-17.7 3.9-23.8 10c-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3l55.4 12.5c0 13.6 11.1 24.6 24.6 24.6c13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8c-6.1-6.4-14.7-10.2-24.1-10.2c-34.9 0-46.3 46.9-14.4 62.8c-1.1 5-1.7 10.2-1.7 15.5c0 52.6 59.2 95.2 132 95.2c73.1 0 132.3-42.6 132.3-95.2c0-5.3-.6-10.8-1.9-15.8c31.3-16 19.8-62.5-14.9-62.5M302.8 331c-18.2 18.2-76.1 17.9-93.6 0c-2.2-2.2-6.1-2.2-8.3 0c-2.5 2.5-2.5 6.4 0 8.6c22.8 22.8 87.3 22.8 110.2 0c2.5-2.2 2.5-6.1 0-8.6c-2.2-2.2-6.1-2.2-8.3 0m7.7-75c-13.6 0-24.6 11.1-24.6 24.9c0 13.6 11.1 24.6 24.6 24.6c13.8 0 24.9-11.1 24.9-24.6c0-13.8-11-24.9-24.9-24.9\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1052},"\u003Cpath fill=\"currentColor\" d=\"M512 194.8c0 101.3-82.4 183.8-183.8 183.8c-101.7 0-184.4-82.4-184.4-183.8c0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8M0 501.5h90v-491H0z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":1054},"\u003Cpath fill=\"currentColor\" d=\"m20.216 6.415l-.132-.666c-.119-.598-.388-1.163-1.001-1.379c-.197-.069-.42-.098-.57-.241c-.152-.143-.196-.366-.231-.572c-.065-.378-.125-.756-.192-1.133c-.057-.325-.102-.69-.25-.987c-.195-.4-.597-.634-.996-.788a6 6 0 0 0-.626-.194c-1-.263-2.05-.36-3.077-.416a26 26 0 0 0-3.7.062c-.915.083-1.88.184-2.75.5c-.318.116-.646.256-.888.501c-.297.302-.393.77-.177 1.146c.154.267.415.456.692.58c.36.162.737.284 1.123.366c1.075.238 2.189.331 3.287.37q1.829.074 3.65-.118q.449-.05.896-.119c.352-.054.578-.513.474-.834c-.124-.383-.457-.531-.834-.473c-.466.074-.96.108-1.382.146q-1.767.12-3.536.006a22 22 0 0 1-1.157-.107c-.086-.01-.18-.025-.258-.036q-.364-.055-.724-.13c-.111-.027-.111-.185 0-.212h.005q.416-.09.838-.147h.002c.131-.009.263-.032.394-.048a25 25 0 0 1 3.426-.12q1.011.029 2.017.144l.228.031q.4.06.798.145c.392.085.895.113 1.07.542c.055.137.08.288.111.431l.319 1.484a.237.237 0 0 1-.199.284h-.003l-.112.015a37 37 0 0 1-4.743.295a37 37 0 0 1-4.699-.304c-.14-.017-.293-.042-.417-.06c-.326-.048-.649-.108-.973-.161c-.393-.065-.768-.032-1.123.161c-.29.16-.527.404-.675.701c-.154.316-.199.66-.267 1c-.069.34-.176.707-.135 1.056c.087.753.613 1.365 1.37 1.502a39.7 39.7 0 0 0 11.343.376a.483.483 0 0 1 .535.53l-.071.697l-1.018 9.907c-.041.41-.047.832-.125 1.237c-.122.637-.553 1.028-1.182 1.171q-.868.197-1.756.205c-.656.004-1.31-.025-1.966-.022c-.699.004-1.556-.06-2.095-.58c-.475-.458-.54-1.174-.605-1.793l-.731-7.013l-.322-3.094c-.037-.351-.286-.695-.678-.678c-.336.015-.718.3-.678.679l.228 2.185l.949 9.112c.147 1.344 1.174 2.068 2.446 2.272c.742.12 1.503.144 2.257.156c.966.016 1.942.053 2.892-.122c1.408-.258 2.465-1.198 2.616-2.657l1.024-9.995l.215-2.087a.48.48 0 0 1 .39-.426c.402-.078.787-.212 1.074-.518c.455-.488.546-1.124.385-1.766zm-1.478.772c-.145.137-.363.201-.578.233c-2.416.359-4.866.54-7.308.46c-1.748-.06-3.477-.254-5.207-.498c-.17-.024-.353-.055-.47-.18c-.22-.236-.111-.71-.054-.995c.052-.26.152-.609.463-.646c.484-.057 1.046.148 1.526.22q.865.132 1.737.212c2.48.226 5.002.19 7.472-.14q.675-.09 1.345-.21c.399-.072.84-.206 1.08.206c.166.281.188.657.162.974a.54.54 0 0 1-.169.364zm-6.159 3.9c-.862.37-1.84.788-3.109.788a6 6 0 0 1-1.569-.217l.877 9.004c.065.78.717 1.38 1.5 1.38c0 0 1.243.065 1.658.065c.447 0 1.786-.065 1.786-.065c.783 0 1.434-.6 1.499-1.38l.94-9.95a4 4 0 0 0-1.322-.238c-.826 0-1.491.284-2.26.613\"\u002F>",{"left":4,"top":4,"width":27,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1056},"\u003Cpath fill=\"currentColor\" d=\"M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134c-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9c152.3 0 165.1-3.7 204 11.4c60.1 23.3 65.6 79.5 44 140.3c-21.5 62.6-72.5 89.5-140.1 90.3c-43.4.7-69.5-7-75.3 24.2M357.1 152c-1.8-1.3-2.5-1.8-3 1.3c-2 11.4-5.1 22.5-8.8 33.6c-39.9 113.8-150.5 103.9-204.5 103.9c-6.1 0-10.1 3.3-10.9 9.4c-22.6 140.4-27.1 169.7-27.1 169.7c-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9c.7-5.4-1.1 6.1 14.4-91.3c4.6-22 14.3-19.7 29.3-19.7c71 0 126.4-28.8 142.9-112.3c6.5-34.8 4.6-71.4-23.8-92.6\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1058},"\u003Cpath fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8m0 448c-110.532 0-200-89.431-200-200c0-110.495 89.472-200 200-200c110.491 0 200 89.471 200 200c0 110.53-89.431 200-200 200m107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516c17.561-9.845 28.324-16.541 28.324-29.579c0-17.246-21.999-28.693-39.784-28.693c-23.189 0-33.894 10.977-48.942 29.969c-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8M298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42s18.841-42 42-42s42 18.841 42 42\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":1060},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 12H5m7 7l-7-7l7-7\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":1062},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14m-7-7l7 7l-7 7\"\u002F>",1794232711825]