問題タブ [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.
c# - 列を並べ替えるには IComparable が必要です
DevExpress xtragrid の列の 1 つで、並べ替え、グループ化、またはフィルタリングが行われていません。同様の質問への回答は、IComparable を実装する必要があることを示唆していますが、実装すると列にまったく表示されなくなりました。
私は何を間違えましたか?
アップデート:
DevExpressで尋ねた...
c# - IComparable.CompareToはSortでnullと比較します
と呼ばれるIComparable<T>.CompareTo
タイプの助けを借りてリストをソートしたいと思います。私が書いたT
Path
驚いたことに、この方法
クラスから
から呼び出されSort()
ますother==null
。さらに驚いたことに、最初のコードブロックで、2番目の例外がスローさshortest
れます。これは、並べ替えの前ではなく、並べ替えの後にnull値が含まれていることを意味します。
c# - IComparable を使用したオブジェクトの並べ替え
IComparable
カスタムオブジェクトにインターフェースを実装して、List.Sort()
アルファベット順にソートできるようにしようとしています。
私のオブジェクトに_name
は、文字列型であるというフィールドがあり、それに基づいてソートしたいと考えています。これが私が実装した方法です:
私が何か間違ったことをしたのか、それとも単に文字列CompareTo
が機能するのかはわかりませんが、基本的に私のリストは次のようにソートされました:
- アップグレードのテスト
- テスト アップグレード 10
- テスト アップグレード 11
- テスト アップグレード 12
- テスト アップグレード 13
- テスト アップグレード 14
- テスト アップグレード 15
- テスト アップグレード 2
- テスト アップグレード 3
- テスト アップグレード 4
- テスト アップグレード 5
私はそれらを次のようにソートしたい:
- アップグレードのテスト
- テスト アップグレード 2
- テスト アップグレード 3
- ...等
c# - リストIEnumerableへ
暗黙的にintをIComparableにキャストできます。リストまたは配列をIEnumerableにキャストすることもできます。
しかし、なぜリストをIEnumerableに暗黙的にキャストできないのでしょうか。
これを.netFramework4.5とVisualStudio2012Ultimateでテストしました。
テストするコード:
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 を返すように定義済みのメソッドを定義する。
vb.net - VB.NET でコレクションの並べ替えを非表示にする
次の例では、クライアントに対して .sort() メソッドを非表示にしたいのですが、どうすればそれを達成できますか?
c# - IComparable実装しない
IComparable
使用からに変更しましたIComparable<Artist>
が、エラーが発生します
「RecordCollection.Artist」はインターフェイスメンバー「System.IComparable.CompareTo(object)」を実装していません
CompareToメソッドを追加しました。
このエラーが何を意味するのかわからないので、なぜこれが発生するのかを説明する助けがあれば素晴らしいでしょう。
新しいアーティストのAVLツリー
c# - オブジェクトをノードとして二分探索木を作成するには?
複数の値を格納し、これらの値の 1 つをツリーの並べ替え (バランス調整) の比較に使用される「メイン」変数として扱うことができるオブジェクト ノードを含む二分探索ツリーを作成する方法はありますか? .
例:
ツリー =Artist
コレクション
- それぞれは、などの
Artist
プロパティを持つノードであり、Name
Age
Name
ツリーのソート/バランスをとる際の比較に使用される「主要な」プロパティです。
これは私がノード定義のために試したものですが、前述の機能について助けが必要です:
c# - IComparable は反変である必要はありませんか?
以下のコードでは、.NET 2.0 Framework をターゲットにしています。
Person (基本クラス) を期待する Compare メソッドに Programmer (派生) オブジェクトを渡すことができます。
しかし、プログラマーは人であるため (単純なオブジェクト指向の概念)、.NET 4.0 では、IComparable インターフェイス宣言の「in」キーワードは「やり過ぎ」であると主張します:)
in キーワードを削除することについて Microsoft にメールを書く前に、別の方法で私を納得させてください :)
c# - CompareTo メソッドが機能しないため、Album クラスから AlbumName を取得できません - IComparable の問題だと思います
CompareTo メソッドを Artist クラスから動作させようとしていますが、Album クラスから AlbumName を取得できません。Album クラスの IComparable に問題があると確信しています。コード固有の回答を手伝ってください、ありがとう。
エラー 1 'Assignment.Album' はインターフェイス メンバー 'System.IComparable.CompareTo(object)' を実装していません
アルバムクラス:
アーティストクラス: