In C #, T [] può essere definito come array o "array covarianti", che hanno sia C # sia Java. Alcune critiche linguistiche ritengono che gli array covarianti siano stati un errore e che sarebbero stati diversi se i generici fossero stati nella lingua fin dall'inizio.
C # non ha "riferimento a T" (ad esempio T&
come si trova in C ++). Mentre puoi prendere l'indirizzo di qualcosa, diventa un tipo di puntatore (come in C). C # ha parametri out e ref, ma C # considera il tipo di out int abc
semplicemente come int
(non int&
, che non esiste in C #) che deve essere assegnato prima di lasciare il metodo normalmente.
C # ha dei puntatori, che possono essere usati solo in un contesto non sicuro. Mentre gli array sono di tipo "gestito" (cioè garbage collection e type-safe), i puntatori non lo sono. Puoi prendere l'indirizzo di un elemento dell'array in un puntatore, ma per usarlo correttamente, dovresti pin l'array in modo che il runtime / gc non si muova o rimuova, poiché in un certo senso questo è un mix gestito e non gestito tipi.
Quindi, non penso che ci sia un termine generico in C # per questi tre tipi, in quanto uno non è supportato, e gli altri due sono gestiti vs. non gestiti, che possono essere correlati, ma sono bestie piuttosto diverse.