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

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


27
ジェネリックリスト/列挙型をDataTableに変換しますか?
異なるジェネリックリストを返すメソッドはほとんどありません。 .netにクラス静的メソッドまたはリストをデータテーブルに変換するものは何ですか?私が想像できる唯一のことは、これを行うためにリフレクションを使用することです。 これがあれば: List<Whatever> whatever = new List<Whatever>(); (この次のコードはもちろん機能しませんが、次の可能性を望んでいます: DataTable dt = (DataTable) whatever;
261 c#  list  generics  datatable 


4
ReSharperが警告:「ジェネリック型の静的フィールド」
public class EnumRouteConstraint<T> : IRouteConstraint where T : struct { private static readonly Lazy<HashSet<string>> _enumNames; // <-- static EnumRouteConstraint() { if (!typeof(T).IsEnum) { throw new ArgumentException( Resources.Error.EnumRouteConstraint.FormatWith(typeof(T).FullName)); } string[] names = Enum.GetNames(typeof(T)); _enumNames = new Lazy<HashSet<string>>(() => new HashSet<string> ( names.Select(name => name), StringComparer.InvariantCultureIgnoreCase )); } public bool Match(HttpContextBase httpContext, …

3
複数の制約を持つジェネリックメソッド
2つのジェネリックパラメーターを持つジェネリックメソッドがあります。以下のコードをコンパイルしようとしましたが、機能しません。.NETの制限ですか?異なるパラメーターに対して複数の制約を設けることは可能ですか? public TResponse Call<TResponse, TRequest>(TRequest request) where TRequest : MyClass, TResponse : MyOtherClass
251 c#  generics  .net-3.5 

4
Scala:抽象型とジェネリック
私はScalaのツアー:抽象型を読んでいました。いつ抽象型を使用するのが良いですか? 例えば、 abstract class Buffer { type T val element: T } むしろそのジェネリック、例えば abstract class Buffer[T] { val element: T }

11
JavaでClass <T>を使用する方法
Genericsと、この質問で背後で実際に何が行われるかについての良い議論があります。そのため、これVector&lt;int[]&gt;は整数配列のベクトルでHashTable&lt;String, Person&gt;あり、キーが文字列と値であるテーブルですPerson。しかし、私を困らせるのはの使用法ですClass&lt;&gt;。 javaクラスClassはテンプレート名も受け取ることになっています(または、Eclipseの黄色い下線が表示されます)。何を入れればいいのか分かりません。Classオブジェクトの要点は、反射などのために、オブジェクトに関する情報が完全にない場合です。Classオブジェクトが保持するクラスを指定するのはなぜですか?はっきりとわからない、またはClassオブジェクトを使用しない、特定のオブジェクトを使用する。


3
汎用辞書の大文字と小文字を区別しないアクセス
マネージdllを使用するアプリケーションがあります。これらのdllの1つは、一般的な辞書を返します。 Dictionary&lt;string, int&gt; MyDictionary; 辞書には、大文字と小文字のキーが含まれています。 別の側では、潜在的なキー(文字列)のリストを取得していますが、ケースを保証できません。キーを使用して辞書の値を取得しようとしています。しかし、もちろん大文字と小文字が一致しないため、次のコードは失敗します。 bool Success = MyDictionary.TryGetValue( MyIndex, out TheValue ); MSDNドキュメントに記載されているように、TryGetValueに大文字と小文字を区別しないフラグがあることを期待していましたが、これは一般的な辞書には無効のようです。 重要なケースを無視してその辞書の値を取得する方法はありますか?適切なStringComparer.OrdinalIgnoreCaseパラメータを使用してディクショナリの新しいコピーを作成するよりも良い回避策はありますか?
244 c#  generics  dictionary 

7
Javaジェネリック型の消去:いつ、何が起こりますか?
OracleのWebサイトで Javaの型消去について読みました。 型消去はいつ発生しますか?コンパイル時または実行時ですか?クラスが読み込まれると?クラスがインスタンス化されるのはいつですか? 多くのサイト(上記の公式チュートリアルを含む)では、型の消去はコンパイル時に行われるとしています。コンパイル時に型情報が完全に削除された場合、ジェネリックを使用するメソッドが型情報なしまたは誤った型情報で呼び出された場合、JDKはどのように型の互換性をチェックしますか? 次の例を考えてみます。クラスAにメソッドがあるとしempty(Box&lt;? extends Number&gt; b)ます。A.javaクラスファイルをコンパイルして取得しますA.class。 public class A { public static void empty(Box&lt;? extends Number&gt; b) {} } public class Box&lt;T&gt; {} 次に、パラメーター化されていない引数(rawタイプ)を使用しBてメソッドを呼び出す別のクラスを作成します。クラスパスでコンパイルすると、javacは十分に賢く警告を発します。だから、持ってそれに保存されているいくつかのタイプの情報を。emptyempty(new Box())B.javaA.classA.class public class B { public static void invoke() { // java: unchecked method invocation: // method empty in class A is applied to …


5
パラメータをActivator.CreateInstance <T>()に渡す方法
私が持っているジェネリックメソッドで指定する型のインスタンスを作成したいと思います。この型には、多数のオーバーロードされたコンストラクタがあります。コンストラクタに引数を渡せるようにしたいのですが、 Activator.CreateInstance&lt;T&gt;() これはオプションとして表示されません。 それを行う別の方法はありますか?

11
文字列からのジェネリック型変換
別のクラスの「プロパティ」を保存するために使用したいクラスがあります。これらのプロパティは名前と値を持つだけです。理想的には、型付きのプロパティを追加できるようにして、返される「値」が常に希望する型になるようにします。 タイプは常にプリミティブである必要があります。このクラスは、基本的に名前と値を文字列として格納する抽象クラスをサブクラス化します。このサブクラスは、基本クラスに型の安全性を追加する(そして、いくつかの変換で私を救う)という考えです。 だから、私は(おおよそ)これであるクラスを作成しました: public class TypedProperty&lt;DataType&gt; : Property { public DataType TypedValue { get { // Having problems here! } set { base.Value = value.ToString();} } } だから問題は: 文字列からプリミティブに戻す「一般的な」方法はありますか? 変換を全面的にリンクする汎用インターフェイスを見つけることができないようです(ITryParsableのようなものが理想的でした!)。

10
コンストラクターにパラメーターが必要なジェネリック型のインスタンスを作成しますか?
BaseFruitを受け入れるコンストラクターがある場合、int weightこのようなジェネリックメソッドで果物の一部をインスタンス化できますか? public void AddFruit&lt;T&gt;()where T: BaseFruit{ BaseFruit fruit = new T(weight); /*new Apple(150);*/ fruit.Enlist(fruitManager); } コメントの後ろに例が追加されています。BaseFruitパラメーターなしのコンストラクターを指定し、メンバー変数を使用してすべてを入力する場合にのみ、これを行うことができるようです。私の実際のコードでは(果物についてではなく)、これはかなり実用的ではありません。 -更新- だから、それはそれではどのような方法でも制約によって解決できないようです。回答から3つの候補ソリューションがあります。 工場パターン 反射 活性剤 反射は最もクリーンなものだと思う傾向がありますが、他の2つを決定することはできません。
230 c#  .net  generics 

13
ラムダ式を使用して、オブジェクトのリストをあるタイプから別のタイプに変換します
あるタイプのオブジェクトのリストを読み取り、別のタイプのオブジェクトのリストを生成するforeachループがあります。ラムダ式でも同じ結果が得られると言われました。 var origList = List&lt;OrigType&gt;(); // assume populated var targetList = List&lt;TargetType&gt;(); foreach(OrigType a in origList) { targetList.Add(new TargetType() {SomeValue = a.SomeValue}); } どんな助けでもいただければ幸いです-私はラムダとlinqに初めて感謝します、s
224 c#  generics  lambda 

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