Tag: generics

Objective-C中有强types的集合吗?

我是Mac / iPhone编程和Objective-C的新手。 在C#和Java中,我们有“generics”,集合类的成员只能是声明的types。 例如,在C# Dictionary<int, MyCustomObject> 只能包含键types为MyCustomObject的整数和值。 Objective-C中是否存在类似的机制?

什么是物化?

我知道Java使用擦除来实现参数化多态(generics)。 我明白什么是删除。 我知道C#通过实现实现参数化多态性。 我知道,可以让你写 public void dosomething(List<String> input) {} public void dosomething(List<Int> input) {} 或者你可以在运行时知道某些参数化types的types参数是什么,但我不明白它是什么。 什么是物化types? 什么是物化价值? 当一个types/值被通用时会发生什么?

使用lambdaexpression式将对象列表从一种types转换为另一种types

我有一个foreach循环读取一个types的对象列表,并产生一个不同types的对象列表。 我被告知lambdaexpression式可以达到相同的结果。 var origList = List<OrigType>(); // assume populated var targetList = List<TargetType>(); foreach(OrigType a in origList) { targetList.Add(new TargetType() {SomeValue = a.SomeValue}); } 任何帮助将不胜感激,我是新lambda和linq谢谢,S

通用字典的大小写不敏感访问

我有一个使用托pipedll的应用程序。 其中一个DLL返回一个通用字典: Dictionary<string, int> MyDictionary; 字典包含大写和小写的键。 另一方面,我得到一个潜在的钥匙(string)列表,但我不能保证的情况下。 我正在尝试使用键获取字典中的值。 但是,当然以下将失败,因为我有一个案件不匹配: bool Success = MyDictionary.TryGetValue( MyIndex, out TheValue ); 我希望TryGetValue将有一个像MSDN文档中提到的忽略大小写标志,但它似乎对通用字典无效。 有没有办法让字典的价值忽略关键的情况? 有没有比使用正确的StringComparer.OrdinalIgnoreCase参数创build字典的新副本更好的解决方法?

如何将parameter passing给Activator.CreateInstance <T>()

我想创build一个我在一个generics方法中指定的types的实例。 这种types有一些重载的构造函数。 我想能够传递参数给构造函数,但是 Activator.CreateInstance<T>() 没有看到有这个作为一个选项。 还有另一种方法吗?

使用Mockito模拟具有通用参数的类

有没有一个干净的方法嘲笑类与generics参数? 说我必须嘲笑类Foo<T> ,我需要传递到一个方法,期望Foo<Bar> 。 我可以很容易地做到以下几点: Foo mockFoo = mock(Foo.class); when(mockFoo.getValue).thenReturn(new Bar()); 假设getValue()返回genericstypesT 但是当我稍后把它传递给一个期望Foo<Bar>的方法的时候,会有小猫。 是铸造这样做的唯一手段?

Javagenerics的“?”,“E”和“T”有什么区别?

我遇到这样的Java代码: public interface Foo<E> {} public interface Bar<T> {} public interface Zar<?> {} 上述三者之间的区别是什么?他们在Java中将这种types或接口声明称为什么?

如何在Java中使用Class <T>?

在这个问题上 ,有很多关于generics的内容以及他们在幕后做了些什么,所以我们都知道Vector<int[]>是整数数组的向量,而HashTable<String, Person>是一个表的键是string和值Person 。 但是,什么让我难过的是Class<>的用法。 java class Class应该也是一个模板名,(或者我被eclipse中的黄色下划线所告知)。 我不明白我应该放在那里。 Class对象的全部重点是当你没有完全掌握一个对象的信息,reflection等等。 为什么它会让我指定Class对象将保持哪个类? 我显然不知道,或者我不会使用Class对象,我会使用具体的一个。

具有多个约束的通用方法

我有一个通用的方法有两个通用的参数。 我试图编译下面的代码,但它不工作。 这是一个.NET限制吗? 是否有可能对不同的参数有多个约束? public TResponse Call<TResponse, TRequest>(TRequest request) where TRequest : MyClass, TResponse : MyOtherClass

ReSharper警告:“genericstypes的静态字段”

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, Route route, string parameterName, RouteValueDictionary values, […]