問題タブ [readonly-collection]
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# - IReadOnlyCollection に ElementAt があるのに IndexOf がない理由
私はIReadOnlyCollection
オブジェクトのを扱っています。
linq
拡張メソッドを使用できるので、少し驚いていますElementAt()
。しかし、私はにアクセスできませんIndexOf()
。
私にはこれは少し非論理的に見えます: 特定の位置で要素を取得できますが、まったく同じ要素の位置を取得することはできません。
それには具体的な理由がありますか?
私はすでに読んだ -> IEnumerable の要素のインデックスを取得する方法は? 私はその反応に完全に満足していません。
c# - ReadOnlyCollection の理由> FxCop によると、不変の 2 次元オブジェクトを生成する場合の代替手段は何ですか?
私はすべてのコードを FxCop に準拠するように変更しています。これは、ReadOnlyCollection を支持して多くの配列、リストを捨てることを意味し、このアドバイスに同意します。ただし、
2 次元配列を置き換えるか、
CA1006:メンバー シグネチャでジェネリック型をネストしないでください
苦情文句。まず、扱いにくいように見えますが、本質的に不変であるため、非常に複雑で理解しにくいようには見えませんList<List<T>>
。配列の欠点を考えると、これは非常に一般的だと思います。第二に、2 次元データを格納し、特にこのために新しい型を作成しない限り、不変である代替案を思いつきません。
ここでのベストプラクティスは何ですか。この FxCop ルールはここでは実際には適用されず、抑制されるべきなのでしょうか?
どうもありがとう。
c# - IWebElement リストの動作を望まない
IWebElement リスト内のすべてのオブジェクトの「テキスト」属性を取得したいのですが、各要素のテキストを抽出してそのリストを通過するループを作成すると、いくつかのテキストが取得されます。
c# - Selenium: コレクションを使用した FindsBy
私はテストの初心者で、質問があります。ReadOnlyCollection<IWebElement>
attribute を使用する場合、どうすれば正しく使用できますかFindsBy
。テストを開始した後、コレクションは常に null です。C# での私のコードは次のとおりです。
ここにウェブのテストがあります:http://testwisely.com/demo/survey
私はこのようなことをしたい: radPercentage[2].Click();
c# - List.AsReadOnly は ReadOnlyCollection を返しますが、Dictionary.AsReadOnly は IReadOnlyDictionary を返すのはなぜですか?
が a の代わりにa をList.AsReadOnly()
返すという事実が私にとって困難なケースに遭遇しました。返されたコレクションは のであったため、自動的に にアップキャストできませんでした。これは奇妙に思えたので、.Net ソース コードを確認したところ、このメソッドが に対して行うのとは異なること、つまりインターフェイスではなく具象クラスを返すことを確認しました。ReadOnlyCollection
IReadOnlyCollection
Value
Dictionary
IReadOnlyCollection
AsReadOnly()
List
Dictionary
これがなぜなのか説明できる人はいますか?この不一致があることは、特に可能な場合、特にパブリックの場合にインターフェイスを使用したいため、不利益に思えます。
私のコードでは、コンシューマーは単なるプライベート メソッドであるため、そのパラメーター シグネチャを からIReadOnlyDictionary<T, IReadOnlyCollection<T>>
に変更できると最初は考えていましたIReadOnlyDictionary<T, ReadOnlyCollection<T>>
。しかし、これにより、プライベート メソッドがコレクションの値を変更する可能性があるように見えることに気付きました。そのため、インターフェイスを適切に使用するために、以前のコードに煩わしい明示的なキャストを追加しました。
ああ、私は常に共分散と反分散を混同しているので、誰かが自動キャストを妨げているものを教えてください。将来のためにそれらを覚えておく方法を賢明な方法で思い出させてください。(たとえば、コレクションは、_____ [入力/出力] パラメーターに対して ______バリアント [co/contra] ではありません。) インターフェイスの実装が多数存在する可能性があり、すべてをキャストするのは安全ではないため、これができない理由を理解しています。ディクショナリの個々の要素を要求された型に変換します。私がこの単純な側面でさえ吹き飛ばしていて、それを理解していない場合を除き、その場合、私を正しく設定するのを手伝ってくれることを願っています...
c# - .Net での ReadOnlyDictionary と Lookup の違い
私はまだ不変性とそのようなオブジェクトをいつ使用するかについて多くを学んでおり、それらが不変であり、クライアントによって変更される可能性のある辞書よりも多くの場合、使用する方が良いことを知っていたという事実のために、より多くのルックアップをコーディングに組み込み始めました。
そうは言っても、 ReadOnlyDictionariesを .Netに導入するためにかなりの作業が行われたことは知っていますが、それぞれが他のものよりも便利な場所と、具体的に何が違うのかについて少し混乱しています。オンラインで調べましたが、この違いを説明する記事が見つからないようです。
たとえば、私はこの質問を見て、ルックアップがより理想的なソリューションになると考えましたが、そうでない理由について混乱しています。
誰でも私を正しい方向に向けることができますか/どちらが他のものよりもどこで使用されるかを説明してください.
ありがとう!!