問題タブ [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# - 一部が null の IComparable オブジェクトの並べ替え
ほとんどの人は、IComparable<T> を実装する参照型 (クラス) を記述するときに、null は実際のオブジェクトよりも小さいという規則を使用します。しかし、逆の規則を使用しようとすると、興味深いことが起こります。
上記のコードを実行すると、null 参照が期待どおりにソートされていないことがわかります。どうやら、A と B を比較するときに、A がオブジェクトで B が null の場合、ユーザー定義の比較が使用されますが、逆に A が null で B がオブジェクトの場合は、代わりに何らかの BCL 比較が使用されます。
これはバグですか?
c# - Treeview の並べ替えをカスタマイズする
すべてのノードのタグに従って、またアルファベータに従ってソートする必要があるツリービューがあります。
例えば:
- Node1、タグ = A、テキスト = Apple
- Node2、タグ = B、テキスト =バルーン
- Node3、タグ = A、テキスト =ヘルプ
タグAを持つノードが最初になり、次にタグBを持つノードになるように並べ替えたいのですが、タグAを含むノードをAからZに並べ替えたい.
(順序 = Node1,Node3,Node2 )
私を助けてください、どうすればいいですか?
前もって感謝します!
c# - ジェネリック型の値を比較する方法は?
ジェネリック型の値を比較するにはどうすればよいですか?
私はそれを最小限のサンプルに減らしました:
エラーは次のとおりです。
演算子'>='は、タイプ'T'および'T'のオペランドには適用できません。
一体全体!?T
はすでにに制約されてIComparable
おり、値型()に制約されている場合でも、演算子where T: struct
、、、、、またはを適用することはできません。(とに関連する回避策が存在することは知っていますが、関係演算子には役立ちません)。<
>
<=
>=
==
!=
Equals()
==
!=
したがって、2つの質問:
- なぜこの奇妙な行動を観察するのですか?既知のジェネリック型の値を比較できない理由は何ですか
IComparable
?それはどういうわけか一般的な制約の目的全体を打ち負かしませんか? - これを解決するにはどうすればよいですか、または少なくとも回避するにはどうすればよいですか?
(この一見単純な問題に関連する質問がすでにいくつかあることを認識していますが、どのスレッドも網羅的または実行可能な答えを提供していないので、ここにあります。)
c# - datarow[] の列の最大値を見つける方法は?
簡単な問題がありますが、ここまたは MSDN で見つけた例を理解できません。(私はまだC#とすべてのデータセット関数に不慣れです)。
列が「建物」、「アパート」、「部屋」であるデータテーブル「tblRoom」があり、それらはすべてintであり、テーブルの主キーです(これはアパートの弱いエンティティです(建物の弱いエンティティです))プロパティ/列)。
DataRow[] roomCollection
次のコードを使用して、建物内の特定のアパートを選択することもできます。
これはすべてうまくいきます(私は推測します...)。今、このアパートから部屋の最大値(このアパートの最大部屋数)を取得したいと考えています。私はこれらのコードを無駄にしようとしました:
ツールチップから、関数に何を書くべきかわかりません。no IEnumerable または Icomparable で例外をスローします。
部屋の列の最大値 (int) を取得するには、何を書く必要がありますか? エラー/ツールチップの意味が理解できないので、馬鹿に説明する「ダミーのための[何か]」を誰もが知っていますMax()
.
編集:ツールチップは、これらを入力することを提案しています(関連するものを示しています):
私は本当にそれを取得しません:(
よろしくお願いします、シェイ。
c# - 「is」を使用して、タイプがIComparableをサポートしているかどうかをテストするにはどうすればよいですか?
ソートする前に、型がIComparableをサポートしているかどうかを確認したいのですが、「is」を使用して型がIComparableインターフェイスをサポートしているかどうかを確認しても、必ずしも正しい答えが得られるとは限りません。たとえば、typeof(int) is IComparable
intがIComparableインターフェイスをサポートしている場合でも、falseを返します。
typeof(int).GetInterfaces()
IComparableをリストし、IComparableタイプを返すことに注意します。それではtypeof(int).GetInterface("IComparable")
、なぜ「is」が期待どおりに機能しないのですか?
c# - IComparable および IComparable
IComparable
とジェネリックの両方を実装する必要がありIComparable<T>
ますか? そのうちの 1 つだけを実装する場合、何か制限はありますか?
c# - Compare() メソッド、親オブジェクトと子オブジェクトの並べ替えが完全ではない
この宿題があります。そして、私は初心者の C# プログラムで、現在 C# と Java を学んでいます
宿題: Drink[] 配列を取得する静的メソッドを作成します。ここで、AlcoholDrink は異なるアルコール値を持っています。このメソッドは、アルコールの最高値 3 つを含む配列を返します。配列内のアルコール飲料がそれほど多くない場合、メソッドは null 参照を返しています!
このメソッドを書いてみましたが、正しく動作しません...
sz[1] = (AlcoholDrink)t[1];での原因 それは飲み物のオブジェクト (ノンアルコール) です。なぜそこにあるのかわかりません...
または、Compare メソッドが完全ではないか、間違いがある可能性があります...どのように目指すことができますか?
ここに私のC#コード:
c#-4.0 - CompareToとして特別注文を実装するにはどうすればよいですか
だから私は以下を持っていますstruct
どこかで私は次のことをします
System.IComparable<Foo>
今、私は例えばを取るために実装したいと思います。.Sort()
の利点Foo[]
。
OrderBy
ロジックを(私の特別な/有線/からThenBy
)に転送するにはどうすればよいint CompareTo(Foo foo)
ですか?
c# - C# 値によるオブジェクトの並べ替え
プロパティ " .Position.X " でソートされたCollidableActorオブジェクトのリストを保持したいと考えています。
これを行うための最も迅速な(最も効率的な)方法は何だろうと思っています。最初は、SortedDictionary を使用してから、SortedList を使用することを考えていましたが、SortedDictionaries の方がとにかく高速であると読みました。
辞書とリストのどちらが必要なのかわからないため、混乱しています。また、IComparableインターフェイスを実装し、CompareTo()メソッドを作成する場合、 .Position.Xを返すだけで十分でしょうか?
そうでない場合は、.Position.Xに従って、追加/削除するときにすばやくソートできる、より良い構造またはクラスがありますか? (リストからオブジェクトを頻繁に追加/削除します。リストを使用する前に、オブジェクトが追加されたとき、または更新されたときに並べ替えたほうがよいでしょうか?)
ありがとうございました。
編集:実際、すべてのオブジェクトが一意になるため、ある種の HashSet コレクションが推奨されますか? ありがとう。