C#泛型而不是疯了

pul*_*988 7 c# java generics

public <T extends java.util.EventListener> T[] getListeners(final Class<T> listenerClass) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

上述java泛型的等效c#泛型表示法是什么?

参数listenerClass将是一个类型而不是一个对象.但是对象T必须属于特定的层次结构.

Dmi*_* S. 13

public T[] GetListeners<T>() where T : EventListener
{
}
Run Code Online (Sandbox Code Playgroud)

  • 假设返回类型是MyListener类型的数组.您可以像这样调用方法:MyListener [] mylisteners = GetListeners <MyListener>(); (3认同)
  • @ pulancheck1988:与Java不同,在C#中,泛型参数是具体的,可访问的.因此,虽然`T.class`在Java中是非法的,但C#等效`typeof(T)`是完全合法的,并且将返回一个对应于`T`类型的`Type`对象.传递`Class <T>`对象的Java习惯用法只是限制Java的泛型实现的一种解决方法; 由于C#没有相同的限制,习语是不同的. (3认同)