問題タブ [generic-collections]
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.
.net - IDictionary: カスタム クラスをキーとして使用する
私はIDictionary<KeyClass, ValueClass>
自分のプロジェクトの1つで使用していました。KeyClass
は非常に単純で、整数が 2 つだけ含まれています。
次のように辞書から値にアクセスしていました。
ディクショナリには、および 同様に他の多くのキーKeyClass
を含むキーが確かに含まれていました。しかし、私は例外を得ました:ValueA = 1
ValueB = 1
IComparable
クラスで実装しましKeyClass
たが、問題は解決しませんでした。私はグーグルでこのCodeProjectの記事を見つけました。クラス実装IEqualityComparer<T>
インタフェースを利用するための以下のテクニックについて説明します。私は自分のクラスでそれを定義しました:
IDictionary<KeyClass, ValueClass>
ここで、次のように宣言する必要があります。
その後、物事はうまくいきました。
私の質問は、保存環境 (.Net 4.0、Windows 7 デスクトップ アプリ) で同じクラスを使用していて、別のプロジェクトで実装KeyClass
せずに作業IEqualityComparet<T>
していたのですが、このプロジェクトにクラスを配置した後に動作しなくなったのはなぜですか?
c# - ファイルからデータを読み取りながら、ソートされたデータをハッシュテーブルまたはディクショナリに追加する
A、15
B、67
C、45
D、10として含むファイルがあります
ファイルからデータを読み取っていますが、データを辞書またはハッシュテーブルに読み取りたいのですが、データは
B、67
C、45
A、
15D.10の値で並べ替える必要があります。
他のリストが効率的に機能する場合は、提案してください
ありがとう
c# - Visual C#2010Expressの不完全なSystem.Collections.Generic
Visual C#2010 ExpressでSystem.Collections.Generic.Stack<>にアクセスしようとしていますが、IDE(およびコンパイラ)が存在しないと主張しています。LinkedList <>、SortedList <>、Queue <>など、他のいくつかのクラスもありません。System.Collections.Generic名前空間とC#Expressの両方のドキュメントを確認しましたが、意図的な制限への参照が見つかりません。
奇妙なことに、System.Collections.Generic名前空間の文書化されたコンテンツをアルファベット順に並べ替えると、List <>の後のすべてが欠落しますが、それは非常に奇妙な偶然かもしれません。
編集:MSBuildを使用してコマンドラインビルドを試しましたが、エラーCS0246も表示されました。ただし、cscの使用は機能しました。
フォローアップ:プロジェクトからすべてのリソースを削除し、Stack<>のインスタンスを作成したばかりのスタブクラスを追加してみました。それが機能しただけでなく、古いクラスを追加してスタブを削除した後も、すべてが機能しました。ある種のキャッシングの愚かさが起こっていたとしか思えません。とてもうるさい。この問題が再発する場合は、再度開きます。
c# - ネストされたObservableCollectionにデータを入力します
クラスがあります
DBから返されるデータは
変数ObservableCollectionOwnerに上記のデータ(ツリー構造など)を入力する必要があります。助けてください。
java - リスト内の特定の一般的なタイプのリスト
リストのリストがあります。
各内部リストのジェネリック型を制限して、外部リストの各要素に1つのタイプのオブジェクトのみを含めることができる内部リストを含める方法を知りたいです。これまで私はこれを試しました:
ただし、属していないタイプのオブジェクトを内部リストに追加する方法があります。内部リストが受け入れるタイプを指定する方法はありますか?
たとえば、次の内部リストがある場合、
内部リストに含まれる特定のタイプを保持しながら、すべての内部リストを含むことができる外部リストを作成するにはどうすればよいですか。
また、これが可能かどうか、または私がしていることが悪いデザインであるかどうかもわかりません。それが悪いデザインである場合、より良いデザインへの洞察(おそらくこれをより良くする別のコレクションがあるかもしれません)は非常にありがたいです。
java - JAXB での TreeSet のアンマーシャリング
JAXB を使用して XML ファイルからコンテンツを取り込みたいクラスがあります。私の XML ファイルは次のようになります。
私の JAXB アノテーション付きクラスは次のようになります。
この配置はオブジェクトを XML に正しくシリアル化することがわかりましたが、それを元に変換しようとすると、使用するTreeSetがHashSetになります。
理論的には、私のコレクションは TreeSet に修正できますが (問題は解決します)、JAXB を正しく構成し、そのロジックを別の場所に延期したいと考えています。代わりに TreeSet を構築するように JAXB に指示するにはどうすればよいですか?
java - 異なるタイプのコレクションを交差させる
とがCollection<A> ca
ありCollection<B> cb
、共通のインターフェイスは共有していませんが、それぞれに というプロパティがあります。で「対応する」値を持つ要素のみをフィルタリングして保持する必要があります。A
B
String
something
ca
cb
残念ながら、この質問/回答に従って共通のインターフェースA
を作成することはオプションではありません。B
私は現在やっています
私が何をするかを知っているという事実を利用してB.equals
います。これをパフォーマンスおよび/またはリソースに関して改善するためにできることはありますか?
c# - 要素を追加する単純なジェネリック コレクション
要素を追加するためだけにジェネリックをサポートする C# からどのコレクションを使用する必要がありますか? を使ってみArrayList
たのですが、非ジェネリック型であることがわかりました。
これが重複している場合は申し訳ありません。ありがとう。
c# - インターフェイスのコレクションに対する C# foreach
以下を簡素化するために C#/LINQ に組み込まれている機能があるかどうか疑問に思っています。
次の行に沿ったものに:
私は次のことが近いことを認識しています:
ただし、コードがコレクションの順序に依存している場合は機能しません。
c# - C# がジェネリックのジェネリック (パラメーター化された型を持つジェネリック) をサポートしないのはなぜですか?
MyType<T>
最近 (おそらく設計上の欠点により)、修正されていない場所のコレクションT
(つまり、1 つのコレクション全体で複数のさまざまなジェネリックのインスタンス化)が必要な場合に、定期的なタスクに直面しました。
(そのような場合に)広く提案されているように、抽象クラスが宣言されました。
そして、私はのコレクションを持っていMyType
ます。ただし、このコレクションでは、どのタイプの要素も 1 つしか持たないという制約がありましたT
。
したがって、私は のカスタム実装を少し作成しましたICollection<TBase>
。Get<TParam>()
type に対応するアイテムを取得するメソッドをそこに含めたかったのTParam
です。後で次のように使用します。
しかし、私はそれを宣言することさえできないことを予期せず発見しました:
内部ジェネリック (またはいわゆる「ジェネリックのジェネリック」) は、C# でも .NET でもサポートされていないためです (私は推測します)。そのような制限の背後に特定の理由があったとどう思いますか (複雑さを除く)?
UPDATE 1.コンパイラのバージョンとコンパイラのエラーについて尋ねました。
Microsoft C#、.NET 3.5 (Visual Studio 2010)。エラー:
エラー CS0081: 型パラメーターの宣言は、型ではなく識別子である必要があります
エラー CS0246: 型または名前空間名 'TCustom' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)
UPDATE 2.修正または説明が必要かどうかを尋ねられました。私は本当に理由を知りたいです。ただし、問題に対する適切な解決策がある場合は、大歓迎です。
更新 3.質問は、このブログ投稿で既に回答されている可能性があります。CLR チームは、言語を過度に複雑にしないようにという大きなプレッシャーにさらされていたようです。