問題タブ [iequatable]
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.
c# - 基本クラスに IEquatable を実装する
最初に EntityFramework コードで ASP.NET MVC を使用しています。
データベースに保存されるすべてのオブジェクトの基本クラスを作成しようとしています (ここでは Entity クラスと呼びます)。
基本クラスに IEquatable を実装する良い方法はありますか? 私の実装では、型と ID をチェックします - これは良い方法ですか? これは常に最終的な派生型を返しますか? 中間の親はどうですか?
オブジェクト
データベース
通常、各派生オブジェクト タイプは個別のデータベースに存在します。ただし、主キーを共有する中間の継承された親を持つオブジェクトがいくつかあります。
次の列を持つ 3 つのテーブルがあるとします。
- コンテンツ
- ID
- 名前
- ページ
- ID
- 体
- ユーザー
- ID
- 名前
したがって、Page テーブルと Content テーブルは主キーを共有します。
c# - IEquatable は Equals メソッドを呼び出しません
IEquatable (C#) の問題に直面しています。次のコードでわかるように、IEquatable を実装したクラスを取得しましたが、「Equals」メソッドに到達していません。私の目的は次のとおりです。データベースに日時列があり、「時間」の部分を考慮せずに日付のみを区別したいと考えています。
例: 12-01-2014 23:14 は 12-01-2014 18:00 と同じです。
適切に機能させる方法や、必要なことを行うための他のオプションを知っていますか?? ありがとうございました!!
c# - ワイルドカード Equatability を持つクラスに GetHashCode を実装する
2 つの int のリストを比較し、1 つの特定の値をワイルド カードとして扱いたいとします。
たとえば、-1 がワイルドカードの場合、
{1,2,3,4} == {1,2,-1,4} //returns true
そして、このすべてのロジックをラップするクラスを書いているのでIEquatable
、関連するロジックを実装して持っていますpublic override bool Equals()
GetHashCode
しかし、オーバーライドする場合は多かれ少なかれ実装する必要があると常に考えていました.Equals()
。コンパイラによって強制されていないことは確かですが、そうしないと間違っているという印象を受けました。
ただし、契約を破ることなく実装する方法がわかりません.GetHashCode()
(Equal であるオブジェクトには異なるハッシュがあります)、または単に実装をreturn 1
.
考え?
generics - Swift の Comparable に準拠するジェネリック クラス
キーにアクセスせずにノードを簡単に比較できるように、Comparable プロトコルに準拠する単純な汎用ノード クラスを作成しようとしています。< および == 関数を記述しようとすると、コンパイラはそれを気に入らないようです。< および == 関数は、Node パラメーターを定義するときに型を想定しています。これは、クラスの内部で等値と < を定義した Java では簡単でした。Swift はそれをグローバルに要求します。何かご意見は ?
例:
c# - 方程式関数を実装する適切な方法は何ですか
多くの方程式インターフェースがあるようです: IEquatable
、IEquatable<T>
、IEqualityComparer
、IEqualityComparer<T>
。2 つのオブジェクトが同じ値を持っているかどうかを検出できるようにするには、どちらを実装する必要がありますか (私のオブジェクトは同じ値の意味を決定します)。
IList
そして、既知の同じタイプの 2 つのオブジェクトだけでなく、1 つが私の既知のタイプである 2 つのオブジェクト、さらには 2 つのオブジェクトのコレクションに対しても可能であることを望みます。IEnumerable
(両方ともジェネリック型ではないため、なし<T>
)
これを行う適切な方法は何ですか?
generics - Swift で Equatable を使用してオブジェクトをプロパティとして比較する
AMRoute クラスには、AMCity クラス タイプの city1 と city2 の 2 つのプロパティがあります。多数の AMRoutes が配列 arrayOfRoutes に格納されます。新しいルートを作成するときは、まず、指定された 2 つの都市にルートが存在しないことを確認する必要があります。
この動作する Obj-C コードを翻訳するのに苦労しています:
-(void)createRouteFromCity:(AMCity*)city1 toCity:(AMCity*)city2 {
Obj-C で使用していたように、'==' 演算子を使用してオブジェクトを比較することはできないと理解しています。トピックの検索中に見つけた例は、ジェネリックを示しています。
これを私の場合に組み込む方法がわかりません。配列内の AMRoute オブジェクトを比較する必要はありません。AMRoute、city1、city2 のプロパティとして保存されているオブジェクトを AMCity オブジェクトとして比較する必要があります。
c# - Resharper を使用して IEquatable インターフェースを生成する際に注意すべき「落とし穴」は何ですか?
Resharper を使用して次のコードを生成しました。そのままでいいのか、それとも修正/認識しなければならない問題があるのか 疑問に思っています。
m_customTRP の比較について疑問に思っています。m_customTRP は IList であり、TimeRfPower も IEquatable を実装しています。次の行も同様です....
...TimeRfPower クラスの Equals() メソッドを使用して各 TimeRfPower を比較しますか?