問題タブ [icomparable]

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 投票する
2 に答える
945 参照

c# - 列を並べ替えるには IComparable が必要です

DevExpress xtragrid の列の 1 つで、並べ替え、グループ化、またはフィルタリングが行われていません。同様の質問への回答は、IComparable を実装する必要があることを示唆していますが、実装すると列にまったく表示されなくなりました。

私は何を間違えましたか?

アップデート:

DevExpressで尋ねた...

0 投票する
2 に答える
1259 参照

c# - IComparable.CompareToはSortでnullと比較します

と呼ばれるIComparable<T>.CompareToタイプの助けを借りてリストをソートしたいと思います。私が書いたTPath

驚いたことに、この方法

クラスから

から呼び出されSort()ますother==null。さらに驚いたことに、最初のコードブロックで、2番目の例外がスローさshortestれます。これは、並べ替えの前ではなく、並べ替えの後にnull値が含まれていることを意味します。

0 投票する
5 に答える
723 参照

c# - IComparable を使用したオブジェクトの並べ替え

IComparableカスタムオブジェクトにインターフェースを実装して、List.Sort()アルファベット順にソートできるようにしようとしています。

私のオブジェクトに_nameは、文字列型であるというフィールドがあり、それに基づいてソートしたいと考えています。これが私が実装した方法です:

私が何か間違ったことをしたのか、それとも単に文字列CompareToが機能するのかはわかりませんが、基本的に私のリストは次のようにソートされました:

  • アップグレードのテスト
  • テスト アップグレード 10
  • テスト アップグレード 11
  • テスト アップグレード 12
  • テスト アップグレード 13
  • テスト アップグレード 14
  • テスト アップグレード 15
  • テスト アップグレード 2
  • テスト アップグレード 3
  • テスト アップグレード 4
  • テスト アップグレード 5

私はそれらを次のようにソートしたい:

  • アップグレードのテスト
  • テスト アップグレード 2
  • テスト アップグレード 3
  • ...等
0 投票する
2 に答える
3939 参照

c# - リストIEnumerableへ

暗黙的にintをIComparableにキャストできます。リストまたは配列をIEnumerableにキャストすることもできます。

しかし、なぜリストをIEnumerableに暗黙的にキャストできないのでしょうか。

これを.netFramework4.5とVisualStudio2012Ultimateでテストしました。

テストするコード:

0 投票する
5 に答える
4516 参照

c# - Sort() および CompareTo() メソッドの内部動作

CompareTo()メソッドが内部でどのように機能するかを理解しようとしてきましたが、失敗しました。このサイトを検索していくつかの投稿を読みましたが、この件に関して MSDN で見るべきものはすべて見たと思いますが、理解できないようです。MSDN の例:

これは、CompareTo()メソッドの実装の MSDN の例です。私はこれを理解しています、私はインターフェースがどのように機能するかを理解しています。私が正しく理解していれば、メソッドIComparableを使用するときにこれが呼び出されます。ArrayList.Sort()

私が理解していないのは、プログラムがCompareTo(object obj)メソッドの引数を渡すのはいつですか? 言い換えれば、Sort()メソッドはどのように機能しますか? つまり、このコードは温度のインスタンスを温度の別のインスタンスと比較していますが、比較を行うために、プログラムはいつ、またはどのようにして 2 番目の温度インスタンスを取得するのでしょうか? 私の質問が理にかなっていることを願っています。

プロセスを画面に出力しようとしたCompareTo()ので、出力をリバースエンジニアリングできるかもしれませんが、さらに混乱しました。

編集:一歩一歩進んだら、自分自身をよりよく説明できるかもしれません。3 つの温度オブジェクトがあるとします: 34、45、21ArrayListです。を呼び出すArrayList.Sort()と、CompareTo()メソッドは のように呼び出され34.CompareTo(45)ますか? そして45.CompareTo(21)?返される整数は、最初の比較では 1 で、2 番目の比較では -1 でしょうか? CompareTo()また、obj (パラメーター) が null の場合にのみ 1 を返すようにメソッドを定義した場合、これらの整数はどのように返されるのでしょうか? -1 または 0 を返すものは何も定義していません。既に実装されているメソッドを実装しているようなものです。CompareTo()-1、0、および 1 を返すように定義済みのメソッドを定義する。

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

vb.net - VB.NET でコレクションの並べ替えを非表示にする

次の例では、クライアントに対して .sort() メソッドを非表示にしたいのですが、どうすればそれを達成できますか?

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

c# - IComparable実装しない

IComparable使用からに変更しましたIComparable<Artist>が、エラーが発生します

「RecordCollection.Artist」はインターフェイスメンバー「System.IComparable.CompareTo(object)」を実装していません

CompareToメソッドを追加しました。

このエラーが何を意味するのかわからないので、なぜこれが発生するのかを説明する助けがあれば素晴らしいでしょう。

新しいアーティストのAVLツリー

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

c# - オブジェクトをノードとして二分探索木を作成するには?

複数の値を格納し、これらの値の 1 つをツリーの並べ替え (バランス調整) の比較に使用される「メイン」変数として扱うことができるオブジェクト ノードを含む二分探索ツリーを作成する方法はありますか? .

例:

ツリー =Artistコレクション

  • それぞれは、などのArtistプロパティを持つノードであり、NameAge
  • Nameツリーのソート/バランスをとる際の比較に使用される「主要な」プロパティです。

これは私がノード定義のために試したものですが、前述の機能について助けが必要です:

0 投票する
2 に答える
146 参照

c# - IComparable は反変である必要はありませんか?

以下のコードでは、.NET 2.0 Framework をターゲットにしています。

Person (基本クラス) を期待する Compare メソッドに Programmer (派生) オブジェクトを渡すことができます。

しかし、プログラマーは人であるため (単純なオブジェクト指向の概念)、.NET 4.0 では、IComparable インターフェイス宣言の「in」キーワードは「やり過ぎ」であると主張します:)

in キーワードを削除することについて Microsoft にメールを書く前に、別の方法で私を納得させてください :)

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

c# - CompareTo メソッドが機能しないため、Album クラスから AlbumName を取得できません - IComparable の問題だと思います

CompareTo メソッドを Artist クラスから動作させようとしていますが、Album クラスから AlbumName を取得できません。Album クラスの IComparable に問題があると確信しています。コード固有の回答を手伝ってください、ありがとう。

エラー 1 'Assignment.Album' はインターフェイス メンバー 'System.IComparable.CompareTo(object)' を実装していません

アルバムクラス:

アーティストクラス: