Tag: generics

什么是“特级”?

没有得到如下所示的东西来编译: public class Gen<T> where T : System.Array { } 与错误 约束不能是特殊的类“System.Array” 我开始怀疑,什么是 “特殊class”? 当他们在通用约束中指定System.Enum时,人们似乎经常会遇到同样的错误。 我也得到了与System.Object , System.Delegate , System.MulticastDelegate和System.ValueType相同的结果。 他们有更多吗? 我在C#中找不到“特殊类”的任何信息。 另外,这些类别有什么特别之处,我们不能将它们用作generics约束?

Mockito:与generics列表匹配

Mockito提供: when(mock.process(Matchers.any(List.class))); 如何避免警告,如果process采取一个List<Bar>而不是?

该types必须是引用types才能在通用types或方法中将其用作参数“T”

我越来越深入到generics,现在有一个我需要帮助的情况。 在主题标题中显示的“Derived”类下面出现编译错误。 我看到很多其他类似的post,但我没有看到这种关系。 有人能告诉我如何解决这个问题吗? using System; using System.Collections.Generic; namespace Example { public class ViewContext { ViewContext() { } } public interface IModel { } public interface IView<T> where T : IModel { ViewContext ViewContext { get; set; } } public class SomeModel : IModel { public SomeModel() { } public int ID { get; set; […]

List <Map <String,String >> vs List <? 扩展Map <String,String >>

有什么区别吗? List<Map<String, String>> 和 List<? extends Map<String, String>> ? 如果没有区别,使用有什么好处? extends ? extends ?

我如何使用接口作为C#genericstypes约束?

有没有办法得到下面的函数声明? public bool Foo<T>() where T : interface; 即。 其中T是一个接口types(类似于where T : class和struct )。 目前我已经解决了: public bool Foo<T>() where T : IBase; 在哪里IBase被定义为一个空的接口,被所有我的自定义接口inheritance…不理想,但它应该工作…为什么你不能定义一个genericstypes必须是一个接口? 对于什么是值得的,我想这是因为Foo正在做reflection,它需要一个接口types…我可以作为一个普通的parameter passing它,并在函数本身进行必要的检查,但这似乎更types安全(和我想有一点更高性能,因为所有的检查都是在编译时完成的)。

如何在Java中克隆generics列表?

我有一个ArrayList<String> ,我想返回一个副本。 ArrayList具有以下签名的克隆方法: public Object clone() 在我调用这个方法之后,如何将返回的Object转换回ArrayList<String> ?

C#:打印对象的所有属性

有没有一种方法可以将.NET的所有属性和对象写入控制台? 当然可以使用reflection,但我很好奇,如果这已经存在…特别是因为你可以在Visual Studio中立即窗口中。 在那里你可以有一个对象的名字(在debugging模式下),按下回车键,它会打印出所有的东西。 像这样的方法存在吗?

在C#中等效的Java Map

我想用我select的一个键来保存一个集合中的项目列表。 在Java中,我会简单地使用Map如下: class Test { Map<Integer,String> entities; public String getEntity(Integer code) { return this.entities.get(code); } } 有没有在C#中这样做的等效方式? System.Collections.Generic.Hashset不使用散列,我不能定义一个自定义types键System.Collections.Hashtable不是一个generics类 System.Collections.Generic.Dictionary没有get(Key)方法

用LINQselect一个字典<T1,T2>

我已经使用“select”关键字和扩展方法返回一个IEnumerable<T>与LINQ,但我有一个需要返回一个通用的Dictionary<T1, T2>并不能算出来。 我从这个例子中学到了一个类似于以下forms的东西: IEnumerable<T> coll = from x in y select new SomeClass{ prop1 = value1, prop2 = value2 }; 我也用扩展方法做了同样的事情。 我假定由于Dictionary<T1, T2>中的项可以迭代为KeyValuePair<T1, T2> ,所以我可以用上面的例子中的“SomeClass”replace为“ new KeyValuePair<T1, T2> { … ” ,但没有奏效(Key和Value被标记为只读,所以我无法编译此代码)。 这是可能的,还是我需要多个步骤做到这一点? 谢谢。

带输出参数的Func <T>

我可以传递一个带有out参数的方法作为Func吗? public IList<Foo> FindForBar(string bar, out int count) { } // somewhere else public IList<T> Find(Func<string, int, List<T>> listFunction) { } Func需要一个types,所以不会在那里编译,并且调用listFunction需要一个inttypes,并且不允许输出。 有没有办法做到这一点?