タグ付けされた質問 「generics」

ジェネリックスは、.NET言語、Java、Swift、Rustなどのさまざまな言語に見られるパラメトリックポリモーフィズムの形式です。

3
LINQでディクショナリ<T1、T2>を選択します
「select」キーワードと拡張メソッドをIEnumerable&lt;T&gt;使用してLINQ付きのを返しましたが、ジェネリックを返す必要があり、それをDictionary&lt;T1, T2&gt;理解できません。私がこれから学んだ例は、次のような形式の何かを使用しました: IEnumerable&lt;T&gt; coll = from x in y select new SomeClass{ prop1 = value1, prop2 = value2 }; 拡張メソッドでも同じことを行いました。上記の例の "SomeClass"を ""で置き換えるDictionary&lt;T1, T2&gt;ことができるようにaの項目を 反復できるため、それは機能しませんでした(キーと値が読み取り専用としてマークされていたため、このコードをコンパイルできませんでした) )。KeyValuePair&lt;T1, T2&gt;new KeyValuePair&lt;T1, T2&gt; { ... これは可能ですか、それとも複数のステップで行う必要がありますか? ありがとう。
171 c#  .net  linq  generics 

2
一般的な戻り値の型の上限-インターフェイスとクラス-驚くほど有効なコード
これは、サードパーティのライブラリAPIからの実際の例ですが、簡略化されています。 Oracle JDK 8u72でコンパイル 次の2つの方法を検討してください。 &lt;X extends CharSequence&gt; X getCharSequence() { return (X) "hello"; } &lt;X extends String&gt; X getString() { return (X) "hello"; } どちらも「チェックされていないキャスト」警告を報告します-理由はわかります。私を困惑させるのは、なぜ私が電話できるのか Integer x = getCharSequence(); そしてそれはコンパイルしますか?コンパイラは、Integerがを実装していないことを知っている必要がありますCharSequence。への呼び出し Integer y = getString(); エラーを出します(予想通り) incompatible types: inference variable X has incompatible upper bounds java.lang.Integer,java.lang.String この動作が有効と見なされる理由を誰かが説明できますか?それはどのように役立ちますか? クライアントは、この呼び出しが安全でないことを認識していません-クライアントのコードは警告なしでコンパイルされます。コンパイルがそのことを警告しない、またはエラーを発行しないのはなぜですか? また、この例との違いは次のとおりです。 &lt;X …
171 java  generics  java-8 


4
Func <T>パラメータなし
Funcとして出力パラメーターを持つメソッドを渡すことはできますか? public IList&lt;Foo&gt; FindForBar(string bar, out int count) { } // somewhere else public IList&lt;T&gt; Find(Func&lt;string, int, List&lt;T&gt;&gt; listFunction) { } Funcには型が必要なので、outはそこでコンパイルされません。listFunctionを呼び出すにはintが必要で、out inは許可されません。 これを行う方法はありますか?
167 c#  .net  linq  generics  func 

14
foreach vs someList.ForEach(){}
コレクションを反復処理するには、明らかに多くの方法があります。違いがあるかどうか、またはなぜ他の方法を使用するのか興味があります。 最初のタイプ: List&lt;string&gt; someList = &lt;some way to init&gt; foreach(string s in someList) { &lt;process the string&gt; } 他の方法: List&lt;string&gt; someList = &lt;some way to init&gt; someList.ForEach(delegate(string s) { &lt;process the string&gt; }); 私は頭の上で、上記で使用した匿名のデリゲートの代わりに、再利用可能なデリゲートを指定できると思います...
167 c#  .net  generics  loops  enumeration 

13
Javaでint []をInteger []に変換する方法は?
私はJavaに不慣れで、非常に混乱しています。 長さ4の大きなデータセットがありint[]、4つの整数の特定の組み合わせが発生する回数を数えたい。これは、ドキュメント内の単語の出現頻度を数えるのとよく似ています。 Map&lt;int[], double&gt;リストが繰り返し処理されるときに各int []を現在のカウントにマップするを作成したいのですが、Mapはプリミティブ型を取りません。 だから私は作った Map&lt;Integer[], Double&gt; 私のデータはとして保存されているArrayList&lt;int[]&gt;ので、ループは次のようになります ArrayList&lt;int[]&gt; data = ... // load a dataset` Map&lt;Integer[], Double&gt; frequencies = new HashMap&lt;Integer[], Double&gt;(); for(int[] q : data) { // **DO SOMETHING TO convert q from int[] to Integer[] so I can put it in the map if(frequencies.containsKey(q)) { frequencies.put(q, …


7
メソッドの戻り値の型をジェネリックにする方法を教えてください。
このメソッドをジェネリックにして、文字列、ブール、整数、または倍精度浮動小数点数を返す方法はありますか?現在は文字列を返していますが、設定値として「true」または「false」が見つかった場合は、たとえばブール値を返したいと思います。 public static string ConfigSetting(string settingName) { return ConfigurationManager.AppSettings[settingName]; }
166 c#  .net  generics  return-type 

9
2つのジェネリック型を持つ1つのインターフェースを実装するJavaクラスを作成する方法は?
汎用インターフェースがあります public interface Consumer&lt;E&gt; { public void consume(E e); } 2つのタイプのオブジェクトを使用するクラスがあるので、次のような処理を行います。 public class TwoTypesConsumer implements Consumer&lt;Tomato&gt;, Consumer&lt;Apple&gt; { public void consume(Tomato t) { ..... } public void consume(Apple a) { ...... } } どうやらできません。 もちろん、ディスパッチを自分で実装することもできます。 public class TwoTypesConsumer implements Consumer&lt;Object&gt; { public void consume(Object o) { if (o instanceof Tomato) …

11
インターフェイスをC#ジェネリック型制約として使用するにはどうすればよいですか?
次の関数宣言を取得する方法はありますか? public bool Foo&lt;T&gt;() where T : interface; すなわち。ここで、Tはインターフェイスタイプです(where T : class、およびと同様struct)。 現在、私は解決しました: public bool Foo&lt;T&gt;() where T : IBase; IBaseが、すべてのカスタムインターフェイスによって継承される空のインターフェイスとして定義されている場合...理想的ではありませんが、機能するはずです...ジェネリック型をインターフェイスにする必要があると定義できないのはなぜですか? 価値Fooがあるのは、インターフェース型が必要な場所でリフレクションを行うためです。通常のパラメーターとして渡して、関数自体で必要なチェックを行うことができますが、これははるかに型保証されているように見えました(そして私はすべてのチェックがコンパイル時に行われるため、もう少しパフォーマンスが高いと仮定します)。

4
具象化とは何ですか?
Javaは消去を伴うパラメトリックポリモーフィズム(ジェネリック)を実装することを知っています。消去とは何ですか。 C#は具体化を伴うパラメトリック多態性を実装していることを知っています。私はそれがあなたを書くことができることを知っています public void dosomething(List&lt;String&gt; input) {} public void dosomething(List&lt;Int&gt; input) {} または、いくつかのパラメーター化された型の型パラメーターが何であるかを実行時に知ることができますが、それが何であるかはわかりません。 具象化タイプとは何ですか? 具体化された値とは何ですか? タイプ/値が具体化されるとどうなりますか?
163 c#  generics  reification 

8
配列は共変であるのにジェネリックは不変なのはなぜですか?
Joshua BlochのEffective Javaから、 配列は、2つの重要な点でジェネリック型と異なります。最初の配列は共変です。ジェネリックスは不変です。 共変とは、XがYのサブタイプの場合、X []もY []のサブタイプになることを意味します。文字列はオブジェクトのサブタイプなので、配列は共変です String[] is subtype of Object[] 不変とは、XがYのサブタイプであるかどうかに関係なく、 List&lt;X&gt; will not be subType of List&lt;Y&gt;. 私の質問は、なぜJavaで配列を共変にする決定をしたのですか?なぜ配列は不変なのにリストは共変なのかなどの他のSOの投稿があります。、しかしそれらはScalaに焦点を合わせているようで、私はついていけません。

7
C#Create New T()
次のコードで、私が何をしようとしているのか(ただし失敗しているのか)を確認できます。 protected T GetObject() { return new T(); } どんな助けでも大歓迎です。 編集: コンテキストは次のとおりです。私は、標準化されたメソッドを使用して、すべてのコントローラーから派生するカスタムコントローラークラスをいじっていました。したがって、コンテキストでは、コントローラータイプのオブジェクトの新しいインスタンスを作成する必要がありました。したがって、執筆時点では、次のようなものでした。 public class GenericController&lt;T&gt; : Controller { ... protected T GetObject() { return (T)Activator.CreateInstance(ObjectType); } public ActionResult Create() { var obj = GetObject() return View(obj); } そして、私はここでの反射が最も簡単だと判断しました。私は確かに、質問の最初のステートメントを考えると、正しいとマークするための最も適切な答えはnew()制約を使用するものであったことに同意します。私はそれを修正しました。
158 c#  .net  generics  c#-4.0  .net-4.0 


10
ジェネリックリスト-リスト内のアイテムの移動
だから私は一般的なリストと、oldIndexそしてnewIndex値を持っています。 アイテムをoldIndex、newIndex...にできるだけ簡単に移動したいです。 助言がありますか? 注意 アイテムは、アイテム間終わるべきである(newIndex - 1)とnewIndex の前にそれが削除されました。
155 c#  .net  generics  list 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.