Perguntas com a marcação «generics»

167
Func <T> sem parâmetro

Posso passar um método com um parâmetro out como um Func? public IList<Foo> FindForBar(string bar, out int count) { } // somewhere else public IList<T> Find(Func<string, int, List<T>> listFunction) { } O Func precisa de um tipo para que a saída não seja compilada lá, e...

163
O que é reificação?

Eu sei que Java implementa polimorfismo paramétrico (genéricos) com apagamento. Eu entendo o que é apagamento. Eu sei que o C # implementa polimorfismo paramétrico com reificação. Eu sei que isso pode fazer você escrever public void dosomething(List<String> input) {} public void...

159
C # Criar novo T ()

Você pode ver o que estou tentando (mas falhando) com o seguinte código: protected T GetObject() { return new T(); } Qualquer ajuda seria muito apreciada. EDITAR: O contexto foi o seguinte. Eu estava brincando com uma classe de controlador personalizada para a qual todos os controladores...

153
Vários tipos genéricos em uma lista

Provavelmente isso não é possível, mas eu tenho esta classe: public class Metadata<DataType> where DataType : struct { private DataType mDataType; } Há mais do que isso, mas vamos simplificar. O tipo genérico (DataType) é limitado aos tipos de valor pela instrução where. O que eu quero...

151
Definição de Java Enum

Pensei entender bem os genéricos Java, mas me deparei com o seguinte em java.lang.Enum: class Enum<E extends Enum<E>> Alguém poderia explicar como interpretar esse parâmetro de tipo? Pontos de bônus por fornecer outros exemplos de onde um parâmetro de tipo semelhante pode ser...

150
Mapa Java equivalente em C #

Estou tentando manter uma lista de itens em uma coleção com uma chave de minha escolha. Em Java, eu simplesmente usaria o Map da seguinte maneira: class Test { Map<Integer,String> entities; public String getEntity(Integer code) { return this.entities.get(code); } } Existe uma maneira...

147
Qual é a diferença entre <? super E> e <? estende E>?

Qual é a diferença entre <? super E>e <? extends E>? Por exemplo, quando você analisa a classe, java.util.concurrent.LinkedBlockingQueuehá a seguinte assinatura para o construtor: public LinkedBlockingQueue(Collection<? extends E> c) e uma para o método: public int...