Advanced .NET Generics e da dove cominciare? [chiuso]

-1

Ho esaminato il codice C # che ha molti generici (e generici con generici ...) e mi sta impiegando più tempo per ingannare il codice.

Conosco la banda di quattro pattern e conosco alcuni dei modelli aziendali fowler (imparandoli mentre procedo).

  1. Esistono tecniche che potresti suggerire quando affronti la comprensione di sistemi come questo?

  2. Ci sono risorse sullo sviluppo di sistemi come questo?

posta Rick Hodder 21.07.2013 - 00:06
fonte

1 risposta

3

Un generico è essenzialmente un parametro di tipo.

Scrivi - una classe, struct o enum.

Parametro : qualcosa che passi in un metodo.

Quindi un parametro di tipo è un tipo che si passa a un metodo. Perché questo è importante? Perché non basta passare object variabili in giro? Per un paio di motivi.

  1. L'utilizzo di un parametro di tipo anziché di object evita la boxe.
  2. L'utilizzo di un parametro type preserva la sicurezza del tipo statico e consente l'inferenza del tipo.

Oltre a ciò, non c'è molto da dire. Devi pensare in termini di ciò che può essere fatto con gli oggetti genericamente , senza dover pensare al loro tipo.

Puoi metterli in una lista, senza riguardo al loro tipo? Certo che puoi. Poiché l'elenco prende oggetti dello stesso tipo, il tipo di elenco è determinato dal modo in cui si crea l'elenco e il tipo viene determinato in quel momento. Ad esempio:

var list = new List<string>();

crea un elenco di stringhe.

Puoi ordinare gli articoli nell'elenco? Ovviamente, finché il tipo specificato durante la creazione dell'elenco implementa l'interfaccia IComparable .

list.Sort();

funziona perché String implementa IComparable .

Naturalmente, puoi avere tipi composti in un elenco:

var list = new List<KeyValuePair<string, MyClass>>();

o tipi ricorsivi

public class Node<T>
{
    public T Item { get; set; }
    public List<Node<T>> Children { get; set; }
}
    
risposta data 21.07.2013 - 00:58
fonte

Leggi altre domande sui tag