問題タブ [indexer]

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

c# - インデクサーから IEnumerable を返すのは悪い習慣ですか?

次のようなテーブルを表す CarsDataStore があるとします。

それから私はすることができました

これは悪い考えですか?これは、私の API の他のデータストア オブジェクト (すべて 1 列の PK インデクサーを持っています) と矛盾しています。ほとんどの人は、この状況でインデクサーがコレクションを返すことを期待していないと思います。

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

c# - インデクサーを使用してデータストアから Linq to SQL オブジェクトを取得する

私たちのチームの開発者の 1 人は、上記の状況でのインデクサーは適切ではなく、GetUser(Guid id)メソッドを優先すべきであると主張しています。

引数は次のとおりです。

1) インメモリ コレクションにインデックスを作成していません。インデクサーは基本的に非表示の SQL クエリを実行しています 2) インデクサーで Guid を使用するのは良くありません (FxCop はこれにもフラグを立てました) 3)nullインデクサーから戻るのは通常の動作ではありません4) API ユーザーは通常、このような動作を予期しません。

私はこれらの点(のほとんど)にある程度同意します。

しかし、Linq の特徴の 1 つは、データベース アクセスを抽象化して、単に多数のコレクションを操作しているように見せかけることだとも主張しがちです。遅延評価パラダイムは、これらのコレクションが評価されないことを意味しますがそれらに対してクエリを実行するまで。ここで具体的なメモリ内コレクションであるかのようにデータストアにアクセスすることは、私には矛盾しているようには見えません。

また、これはこのパターンを広範かつ一貫して使用する継承されたコードベースであることを念頭に置いて、リファクタリングする価値はありますか? 最初から Get メソッドを使用したほうがよかったかもしれないことは認めますが、インデクサーを使用することが完全に間違っているとはまだ確信していません。

私はすべての意見を聞くことに興味があります、ありがとう。

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

c# - Moqを使用してC#でインデクサーを設定する

Moqを使用してC#でインデクサーを設定する方法を理解するのに問題があります。Moqのドキュメントは弱く、私は多くの検索を行いました...私がやりたいことは、Moqのインデックス付きプロパティの設定方法のソリューションと似ています。

上記を変更して、任意のインデックスと値で機能するようにしたいので、次のようなことができます。

現在、次のものがあります。これは、インデックス付きプロパティゲッターに最適ですが、値を設定した場合、Moqはそれを無視します。

0 投票する
4 に答える
227 参照

c# - インデクサーを Dictionary.Values に適用するにはどうすればよいですか (C# 3.0)

私はプログラムをやった

何も問題はなく、正常に動作します。

しかし、以下のようなことは可能ですか

これは私の知識のためです(基本的には1行で同じことを達成しようとしています)。

注: ExposureCollection はDictionary<DateTime, Dictionary<string, string>>

まず第一に、それが可能かどうかは疑問です!

C#3.0を使用しています。

ありがとう。

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

c# - Genericsを介して実装されたC#パラメータ化されたプロパティクラス?

C# でパラメーター化されたプロパティを実装するために使用できるジェネリック クラスを作成したいと考えています。私が欲しい基本的なコードはこれです:

しかし、typeReturn未知/無制限であるため、コンパイラは行にプロットしていoReturn[oIndexer]ます。

では、どうすればこれを機能させることができますか?私の最初の(まあ、2番目の)考えは、リフレクションを使用して条件付きでインデクサーを見つける(見つからない場合はエラーを発生させる)かwhere typeReturn: I???、クラス定義で修飾子を使用することです。しかし、修飾子を使用すると、どうなるでしょI???うか?

この問題の解決策をありがとう!

注: リフレクションを介してインデクサーを正しく見つける方法は、(おそらく) http://www.dotnet247.com/247reference/msgs/3/16665.aspx (最後のメッセージを参照) にあります。

編集:マシューが以下で指摘したように...私は元の説明にタイプミス/バグのようなものがあります...私自身のせいです、本当に...もともと寝る直前にこれを書いていました!私が望むコードは、次のようになります。

...そして、あなたはそれがうまくいくと思いますか!?

ええと、そうではありません!(「int-able」型が欲しい) という不満はまだtypeIndexerありますが、はるかに優れています! また、厄介な「oReturnを実際に何にも設定できない」問題を解決するためにコンストラクターを追加しました=)

しかし、これでも正しく見えません (配列は常に INT によってインデックス付けされますよね? そうであれば、typeIndexer は必要ありません)... 明日の作業でもう一度確認する必要があります =)

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

c# - パラメーターと関数の呼び出しを行う拡張メソッドでインデクサーを使用する方法

メソッドで使用indexersすることは可能ですか。extension

例えば。あくまでも例として考えてください。

編集

  1. 利用方法mygrid.SelectedValue("mycol")

  2. mygrid.SelectedValue["mycol"]上のものではなく、インデクサーとして使用する方法。

  3. このような使い方も可能ですか?mygrid.SelectedValue["mycol"](out somevalue);

この種の値を取得する構文は何ですか。簡単な例やリンクはどれでも機能します。

0 投票する
10 に答える
26356 参照

c# - C# インデクサーはいつ使用する必要がありますか?

インデクサーをもっと使いたいのですが、いつ使うべきかわかりません。オンラインで見つけたのはMyClass、 や などのクラスを使用する例だけIndexerClassです。

生徒と教師がいて、各教師が担当する生徒のリストを持っている学校システムではどうですか? そのシナリオではインデクサーが必要ですか? 簡単にするために、各生徒は 1 人の教師にしか所属できません。

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

wpf - WPF で現在のデータ項目のデフォルトのインデクサーにバインドする構文は?

私は DataRow の ObservableCollection に設定された itemssource を持つ Listbox を持っています。この例では、各 DataRow に 5 つの列があるとします。

ListBox の DataTemplate には、5 つのテキストブロック (各列に 1 つ) があります。私の質問は、行のインデクサーにバインドして列の値を取得するにはどうすればよいですか?

これが私の試みですが、何も表示されないため、構文が間違っている必要があります。

私はすでに次のようなことを行っているので、バインディングでインデクサーを使用できることを知っています。

私の構文を修正するための助けをいただければ幸いです。

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

c# - 同じ (ジェネリック) クラス内からインデクサーを呼び出す

MyMethod() 内のステートメントのため、コードはコンパイルされません。インデクサーを呼び出す別の方法はありますか?

編集:変更された MyMethod()

Edit2:コンパイルエラー

ありがとう。

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

c# - インデクサーをオーバーロードして、foreach'ableクラスを作成します

私はこのようなことをしようとしましたが、これは機能しません:

MSDNがインデクサーが過負荷になる可能性があると言っているので、ここで専門家に尋ねることにしました。foreachループと連携するためにインデクサーをオーバーロードする方法は?