Runtime: doubleまたはfloatフィールドを持つ構造体のデフォルトのハッシュコードが間違っています

作成日 2018年02月24日  ·  3コメント  ·  ソース: dotnet/runtime

スピーカー:

using System;

struct StructWithDoubleField
{
    public double value;
}

class My {

    static void Main() {
        StructWithDoubleField s1;
        s1.value = 0.0;
        StructWithDoubleField s2;
        s2.value = -0.0;

        Console.WriteLine(s1.GetHashCode() == s2.GetHashCode() ? "PASSED" : "FAILED");
    }

}

最も参考になるコメント

構造体のデフォルトのGetHashCode実装は、 throw new NotSupportedException("Tomato!"); :grin:である必要があります。

全てのコメント3件

構造体のデフォルトのGetHashCode実装は、 throw new NotSupportedException("Tomato!"); :grin:である必要があります。

https://github.com/dotnet/coreclr/pull/13164はこのケースを見逃しました。

@jkotasパッチリリースへの修正の少なくともobjectフィールド部分の移植を要求するプロセスは何ですか? aspnet / Mvc#7673などの顧客から報告されたダウンストリームのバグを考えると、少なくとも2.0.xではこれが必要なようです。

/ cc @davidfowl @Eilon @Petermarcu

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

Timovzl picture Timovzl  ·  3コメント

aggieben picture aggieben  ·  3コメント

bencz picture bencz  ·  3コメント

ilmax picture ilmax  ·  3コメント

jzabroski picture jzabroski  ·  3コメント