Questions tagged «generics»

泛型是在多种语言中发现的参数多态形式,包括.NET语言,Java,Swift和Rust。

5
给定的键在词典中不存在。哪个键?
有没有一种方法可以影响所有通用类,从而在C#中的以下异常中获取给定键的值?我认为这是Microsoft的异常描述中的一个大小姐。 "The given key was not present in the dictionary." 更好的方法是: "The given key '" + key.ToString() + "' was not present in the dictionary." 解决方案可能涉及mixin或派生类。

9
通用<的真实示例是什么?超级T>?
我知道这&lt;? super T&gt;代表任何级别的T父类T(任何级别的父类)。但是我真的很难想象这个通用绑定通配符的任何现实示例。 我了解这&lt;? super T&gt;是什么意思,并且已经看到了此方法: public class Collections { public static &lt;T&gt; void copy(List&lt;? super T&gt; dest, List&lt;? extends T&gt; src) { for (int i = 0; i &lt; src.size(); i++) dest.set(i, src.get(i)); } } 我正在寻找可以使用此构造的现实生活用例的示例,而不是对其含义的解释。

2
scala-泛型中的任何vs下划线
Scala中以下泛型定义之间的区别是什么: class Foo[T &lt;: List[_]] 和 class Bar[T &lt;: List[Any]] 我的直觉告诉我它们大致相同,但后者更明确。我发现前者可以编译但后者不能编译的情况,但不能使我完全了解。 谢谢! 编辑: 我可以混入另一个吗? class Baz[T &lt;: List[_ &lt;: Any]]

7
Java泛型超级关键字
我经历了这些话题 泛型..?超级T 用'super'关键字绑定泛型 但是,我似乎仍然对super关键字感到迷茫: 当我们声明这样的集合时: List&lt;? super Number&gt; list = null; list.add(new Integer(0)); // this compiles list.add(new Object()); // this doesn't compile 不应该相反吗?我们有一个列表,其中包含一些对象(类型未知),它们是的父对象Number。因此Object应该适合(因为它是的父项Number),Integer而不应该。由于某种原因,情况恰恰相反。 只要我们有以下代码 static void test(List&lt;? super Number&gt; param) { param.add(new Integer(2)); } public static void main(String[] args) { List&lt;String&gt; sList = new ArrayList&lt;String&gt;(); test(sList); // will never compile, …
76 java  generics 

3
将数组转换为IEnumerable <T>
假设您有一个Employee这样的基本类: class Employee { public string Name; public int Years; public string Department; } 然后(在一个单独的类中)我有以下代码片段(我想我理解除了最后一个以外的所有内容): 我相信以下代码片段可以工作,因为数组初始化器创建了一个Employee对象数组,该对象与分配给其的forceforce变量具有相同的类型。 Employee[] workforceOne = new Employee[] { new Employee() { Name = "David", Years = 0, Department = "software" }, new Employee() { Name = "Dexter", Years = 3, Department = "software" }, new Employee() …
76 c#  arrays  generics  casting 

7
将List(of object)转换为List(of string)
有没有办法到转换List(of Object)到List(of String)C#或vb.net没有通过所有的项目迭代?(在后台进行迭代很好–我只需要简洁的代码) 更新: 最好的方法可能只是做一个新的选择 myList.Select(function(i) i.ToString()).ToList(); 要么 myList.Select(i =&gt; i.ToString()).ToList();
76 c#  vb.net  generics 


5
IUnityContainer.Resolve <T>引发错误,声称它不能与类型参数一起使用
昨天我实现了代码: CustomerProductManager productsManager = container.Resolve&lt;CustomerProductManager&gt;(); 它是可编译的并且可以正常工作。 今天(可能我已经修改了一些东西),我不断收到错误: 非泛型方法'Microsoft.Practices.Unity.IUnityContainer.Resolve(System.Type,string,params Microsoft.Practices.Unity.ResolverOverride [])'不能与类型参数一起使用 我的同事具有相同的源代码,并且没有相同的错误。为什么?如何解决问题? 聚苯乙烯 行“使用Microsoft.Practices.Unity;” 在使用部分中。 我试图用非通用版本替换通用版本: CustomerProductManager productsManager = (CustomerProductManager)container.Resolve(typeof(CustomerProductManager)); 并得到另一个错误: 方法'Resolve'的重载没有接受'1'参数 似乎未引用其中一个程序集。但是,哪个程序集呢?我引用了其中两个:1. Microsoft.Practices.Unity.dll 2. Microsoft.Practices.ServiceLocation.dll PPS我也遇到过类似的问题http://unity.codeplex.com/WorkItem/View.aspx?WorkItemId=8205,但已解决为“不是bug” 任何想法都会有所帮助

5
为什么在有界通配符泛型中不能有多个接口?
我知道Java的泛型类型有各种各样的违反直觉的属性。特别是我不理解的一个,希望有人能向我解释。为类或接口指定类型参数时,可以对其进行绑定,以使其必须使用来实现多个接口public class Foo&lt;T extends InterfaceA &amp; InterfaceB&gt;。但是,如果要实例化实际对象,则此方法不再起作用。List&lt;? extends InterfaceA&gt;很好,但是List&lt;? extends InterfaceA &amp; InterfaceB&gt;无法编译。考虑以下完整代码段: import java.util.List; public class Test { static interface A { public int getSomething(); } static interface B { public int getSomethingElse(); } static class AandB implements A, B { public int getSomething() { return 1; } public …

4
Java通用通配符:<?扩展Number> vs <T扩展Number>
这两个功能有什么区别? static void gPrint(List&lt;? extends Number&gt; l) { for (Number n : l) { System.out.println(n); } } static &lt;T extends Number&gt; void gPrintA(List&lt;T&gt; l) { for (Number n : l) { System.out.println(n); } } 我看到相同的输出。
75 java  generics 

6
如何创建通用扩展方法?
我想开发一种通用扩展方法,该方法应按字母顺序排列字符串,然后按纵向升序排列。 我的意思是 string[] names = { "Jon", "Marc", "Joel", "Thomas", "Copsey","Konrad","Andrew","Brian","Bill"}; var query = names.OrderBy(a =&gt; a.Length).ThenBy(a =&gt; a); 开发通用扩展方法的方法是什么? 我试过了 : public static class ExtensionOperation { public static T[] AlphaLengthWise&lt;T&gt;(this T[] names) { var query = names.OrderBy(a =&gt; a.Length).ThenBy(a =&gt; a); return query; } } 我收到了 : 错误1:T不包含长度的定义 错误2:无法转换System.Linq.IOrderedEnumerable为T[]。
75 c#  generics 

5
eclipse编译器或javac中的错误(“无法确定T的类型参数”)
以下代码 public class GenericsTest2 { public static void main(String[] args) throws Exception { Integer i = readObject(args[0]); System.out.println(i); } public static &lt;T&gt; T readObject(String file) throws Exception { return readObject(new ObjectInputStream(new FileInputStream(file))); // closing the stream in finally removed to get a small example } @SuppressWarnings("unchecked") public static &lt;T&gt; T …
74 java  eclipse  generics 

3
制作通用属性
我有一个存储序列化值和类型的类。我想要一个属性/方法返回已经强制转换的值: public String Value { get; set; } public Type TheType { get; set; } public typeof(TheType) CastedValue { get { return Convert.ChangeType(Value, typeof(_Type)); } 这在C#中可能吗?
74 c#  .net  generics  properties 

6
从C#通用字典中筛选出值
我有一个C#字典,Dictionary&lt;Guid, MyObject&gt;我需要根据的属性进行过滤MyObject。 例如,我要从字典中删除所有记录,其中MyObject.BooleanProperty = false。实现这一目标的最佳方法是什么?

1
Scala通用方法-T没有可用的ClassTag
我对Scala比较陌生,正在尝试定义通用对象方法。但是,当我在方法中引用参数化类型时,将得到“ T没有可用的ClassTag”。这是一个说明问题的人为示例。 scala&gt; def foo[T](count: Int, value: T): Array[T] = Array.fill[T](count)(value) &lt;console&gt;:7: error: No ClassTag available for T def foo[T](count: Int, value: T): Array[T] = Array.fill[T](count)(value) ^ 在此先感谢您的帮助,以帮助您理解此处的错误以及如何使此示例示例起作用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.