タグ付けされた質問 「equality」

等価とは、(1)アイテムが同じアイテム、変数、またはオブジェクトであるか、(2)アイテムが異なるアイテム、変数、またはオブジェクトであるが、同じ値である場合に存在する、2つ以上のアイテムまたは変数またはオブジェクト間の関係です。このタグは通常、プログラミング言語固有のタグだけでなく、データベースシステムなどの他のコンテキストタグとともに使用する必要があります。投稿には、同等性テストについて可能な限り多くのコンテキストを含める必要があります。

5
Python dictが同じハッシュを持つ複数のキーを持つことができるのはなぜですか?
私は内部でPythonhash関数を理解しようとしています。すべてのインスタンスが同じハッシュ値を返すカスタムクラスを作成しました。 class C: def __hash__(self): return 42 上記のクラスのインスタンスは一度に1つしか存在できないと仮定しましたdictが、実際には、adictは同じハッシュを持つ複数の要素を持つことができます。 c, d = C(), C() x = {c: 'c', d: 'd'} print(x) # {<__main__.C object at 0x7f0824087b80>: 'c', <__main__.C object at 0x7f0823ae2d60>: 'd'} # note that the dict has 2 elements もう少し実験してみたところ__eq__、クラスのすべてのインスタンスが等しく比較されるようにメソッドをオーバーライドすると、dict1つのインスタンスしか許可されないことがわかりました。 class D: def __hash__(self): return 42 def __eq__(self, other): return …


7
C#.Equals()、. ReferenceEquals()および==演算子
これら3つについての私の理解は次のとおりです。 .Equals()データの同等性をテストします(より適切な説明がないため)。.Equals()同じオブジェクトの異なるインスタンスに対してTrueを返すことができます。これは、最も一般的にオーバーライドされるメソッドです。 .ReferenceEquals() 2つのオブジェクトが同じインスタンスであり、オーバーライドできないかどうかをテストします。 ==ReferenceEquals()デフォルトと同じですが、これはオーバーライドできます。 しかし、C#ステーションは次のように述べています。 オブジェクトクラスでは、Equalsと ReferenceEqualsメソッドは意味的に同等ですが、ReferenceEqualsオブジェクトインスタンスでのみ機能する点が異なります。 ReferenceEqualsこの方法は、静的です。 今はわかりません。誰かがこれに光を当てることができますか?
84 c#  equality 


4
文字列0(n)を比較するのに、数値0(1)を比較するのはなぜですか?
2つの文字列が等しいかどうかを比較するには、インタープリターが両方の文字列を反復処理して各文字を比較する必要があることを理解しています。 これは時間を複雑0(n)にしnます。ここで、は最短の文字列の長さです。 ただし、2つの数値を比較して等しいかどうかは0(1)です。 何故ですか?インタプリタは、等しいかどうかを確認するためにすべての数値を反復処理する必要はないでしょうか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.