問題タブ [iequalitycomparer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
19622 参照

objective-c - Objective-C での等価性のチェック

辞書のキーがメソッドパラメータの文字列と同じであることを確認するにはどうすればよいですか? つまり、以下のコードでは、dictobj は NSMutableDictionary のオブジェクトであり、dictobj の各キーについて、文字列と比較する必要があります。これを達成する方法は?NSString のキーを型変換する必要がありますか??

0 投票する
3 に答える
439 参照

c# - 2つのリストの比較C#で

私はというクラスを持っています

このクラスはIEquatableを継承し、必要な方法で同等の実装を行います。(意味:コード内で2つのMyClass tyupeオブジェクトを個別に比較すると、機能します)

次に、2つのリストを作成します。

ListAとListBを比較するとき、私は真実になるべきですか?

0 投票する
3 に答える
11669 参照

c# - linq Except およびカスタム IEqualityComparer

文字列の 2 つのリストにカスタム比較子を実装し、.Except() linq メソッドを使用して、リストの 1 つではないものを取得しようとしています。カスタム比較子を使用する理由は、"あいまい" な比較を行う必要があるためです。つまり、1 つのリストの 1 つの文字列を別のリストの文字列内に埋め込むことができます。

次の比較子を作成しました

デバッグすると、ヒットする唯一のブレークポイントは GetHashCode() メソッドにあります。Equals() は決して触れられません。何か案は?

0 投票する
3 に答える
2905 参照

c# - 参加 + IEqualityComparerとハッシュコード

独自の LINQ リファレンスを作成していますが、より複雑な演算子の実装で問題が発生しています。

IEqualityComparer を使用する Join 実装があります。

書く前にまずそれを理解しようとしています(明らかに)

この2つのリストをイメージしてください:

ここで奇妙なことは何もありません。次のようなイニシャルで両方のリストに参加したい:

イニシャル=A ワード=アリ
イニシャル=A ワード=アーク
イニシャル=B ワード=ボート
...

私はコンパレータが必要です、私はこれを書きました:

結合自体:

HashCodes を使用するのは初めてです。デバッグの適切なセッションの後、すべての単語がコンパレーターに移動し、その HashCode を確認します。

イニシャルだけを比較したいので、最初の文字のハッシュだけが必要だと思います(間違っていますか?)

問題は、これが正しく機能していないことです。「Ant」と「Arc」は等しいと言われています。わかりました、同じリスト内のすべての単語を比較するかどうかですが、最後に見つかった単語のみを追加します。この場合、Arc で、Ant を無視し、Ant は「A に等しい」 " それも...

"Ant" と "Ant" を入力すると、両方が追加されます。

要するに、そのようなことをする方法は何ですか?私は何か間違ったことをしていることを知っています。

ありがとうございました。

0 投票する
4 に答える
6701 参照

c# - List.Containsが期待どおりに機能していません

タイプのオブジェクトとMyBullList<MyBull> origがある場合

では、なぜこれが間違っているのでしょうか。

0 投票する
1 に答える
231 参照

iequalitycomparer - NameValueCollectionは、実際にはIEqualityComparerで何もしませんか?

私が見ているのですSystem.Collections.Specialized.NameValueCollectionIEqualityComparer、これは、私のような誰かがコレクション内のアイテムを、たとえばキーのアルファベット順のようなもので並べ替えたい場合に朗報です。

しかし、よく見ると、クラスが実際にどこでも使用しているのReflectorはわかりません。私の観察は正しいですか?のように、いくつかの基本的な順序でその構成アイテムを再配置する以外に、列挙可能なエンティティでの使用は見られません。そして、そのような何か(、、、、など)を実行したいように見えるメソッドは表示されません。NVCIEqualityComparerIEqualityComparerNVCSortArrangeOrderByAggregate

0 投票する
1 に答える
465 参照

linq - 多くのプロパティと一意の値を持たないクラスの IEqualityComparer

IEqualityComparerこのクラスの実装方法は?

ID プロパティは一意ではありません。どちらのプロパティにも一意の値はありません。

エンティティには 7 つのプロパティがあります。

0 投票する
4 に答える
825 参照

c# - IEqualityComparer と奇妙な結果

このクラスを見てください:

また、Vector クラスもあります。これは、2 つのポイントとその他の属性だけです。ベクターに同じポイントを持ちたくないので、次の方法を思いつきました。

そして、この単体テストでは、例外が発生するはずです:

コードのように同じポイント、つまり mPoint1 を使用すると、例外がスローされます。mPoint2 を使用すると、名前と座標が同じであっても、例外はスローされません。ハッシュコードを調べたところ、実際には異なっていました。GetHashCode で作成したコードに基づいて、これら 2 つのポイントは同じハッシュコードを持つと考えました。

なぜこれが私が思ったように機能しないのか、誰かが私に説明できますか? 私はこれをうまく説明したかどうか確信が持てませんが..私は助けに感謝します:D

ジョージ

0 投票する
8 に答える
59778 参照

linq - IComparer、IEqualityComparer、または単一メソッド インターフェイスの代わりにラムダ式を渡しますか?

この男が IComparer または IEqualityComparer が期待される ArrayList.Sort(IComparer here) または IEnumerable.SequenceEqual(IEnumerable list, IEqualityComparer here) にラムダ式を渡したコードを見たことがあります。

見たのか、ただ夢を見ているだけなのかは定かではありません。そして、これらのコレクションのいずれにも、メソッド シグネチャで Func<> またはデリゲートを受け入れる拡張機能が見つからないようです。

そのようなオーバーロード/拡張メソッドはありますか? または、そうでない場合、このようにいじくり回して、単一メソッド インターフェイスが期待されるアルゴリズム (読み取りデリゲート) を渡すことは可能ですか?

更新 ありがとう、みんな。私もそう思っていました。夢見ていたに違いない。変換の書き方を知っています。私はそのようなものを見たことがあったのか、それとも単に見たと思っただけなのか確信が持てなかった.

さらに別の更新 ほら、ここで、そのようなインスタンスを1つ見つけました。やっぱり夢じゃなかった。この男がここで何をしているのか見てください。何を与える?

そして、ここに別の更新 があります。わかりました。男はComparison<T>過負荷を使用しています。良い。素晴らしいですが、完全に誤解を招く傾向があります。いいけど。ありがとう。

0 投票する
1 に答える
1981 参照

c# - コレクションから重複するbyte[]を削除する

これはおそらく非常に単純な質問になります。コレクションから重複するbyte[]を削除しようとしています。

デフォルトの動作は参照を比較することなので、IEqualityComparerの作成は機能すると思いましたが、機能しません。

HashSetとLINQのDistinct()を使用してみました。

サンプルコード:

出力: