<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Wed Feb 07 21:36:32 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[CSHARP-339] Check all implementations of Equals, operator == and GetHashCode</title>
                <link>https://jira.mongodb.org/browse/CSHARP-339</link>
                <project id="10041" key="CSHARP">C# Driver</project>
                    <description>&lt;p&gt;Some of the implementations of Equals, operator == and GetHashCode are wrong.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;    var x = new BsonInt32(1);&lt;br/&gt;
    var y = new BsonDouble(1.0);&lt;br/&gt;
    Console.WriteLine(x.Equals&lt;img class=&quot;emoticon&quot; src=&quot;https://jira.mongodb.org/images/icons/emoticons/thumbs_up.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;);&lt;br/&gt;
    Console.WriteLine(x.GetHashCode());&lt;br/&gt;
    Console.WriteLine(y.GetHashCode());&lt;/p&gt;

&lt;p&gt;Outputs:&lt;/p&gt;

&lt;p&gt;True&lt;br/&gt;
23866&lt;br/&gt;
1072716558&lt;/p&gt;

&lt;p&gt;This violates the contract of Equals and GetHashCode, which states that when two objects are Equal, they should have the same hash code.&lt;/p&gt;

&lt;p&gt;Another example:&lt;/p&gt;

&lt;p&gt;    var r = new BsonDouble(double.NaN);&lt;br/&gt;
    var s = new BsonDouble(double.NaN);&lt;br/&gt;
    Console.WriteLine(r == s);&lt;br/&gt;
    Console.WriteLine(r.Equals(s));&lt;/p&gt;

&lt;p&gt;Outputs:&lt;/p&gt;

&lt;p&gt;False&lt;br/&gt;
False&lt;/p&gt;

&lt;p&gt;To be consistent with the double data type == should return false and Equals should return true in this case.&lt;/p&gt;

&lt;p&gt;There may be other examples, which is why this ticket says to check all implementations.&lt;/p&gt;</description>
                <environment></environment>
        <key id="23529">CSHARP-339</key>
            <summary>Check all implementations of Equals, operator == and GetHashCode</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</type>
                                            <priority id="4" iconUrl="https://jira.mongodb.org/images/icons/priorities/minor.svg">Minor - P4</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="9">Done</resolution>
                                        <assignee username="robert@mongodb.com">Robert Stam</assignee>
                                    <reporter username="robert@mongodb.com">Robert Stam</reporter>
                        <labels>
                    </labels>
                <created>Wed, 12 Oct 2011 03:26:14 +0000</created>
                <updated>Thu, 2 Apr 2015 18:28:12 +0000</updated>
                            <resolved>Thu, 13 Oct 2011 04:49:06 +0000</resolved>
                                    <version>1.2</version>
                                    <fixVersion>1.3</fixVersion>
                                                        <votes>0</votes>
                                    <watches>0</watches>
                                                                                                                <comments>
                            <comment id="60186" author="rstam" created="Thu, 13 Oct 2011 04:49:06 +0000"  >&lt;p&gt;Only backward breaking if you were relying on Equals coercing between numeric BsonValues (which == still does) or depending on the Equals comparing double.NaN using == instead of the Equals.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="23501">CSHARP-338</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Backwards Compatibility</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10011"><![CDATA[Minor Change]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hrh8av:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>14144</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </customfields>
    </item>
</channel>
</rss>