Fanno? O per velocizzare il mio programma dovrei passarli per riferimento?
Fanno? O per velocizzare il mio programma dovrei passarli per riferimento?
Risposte:
Il riferimento viene passato per valore .
Gli array in .NET sono oggetti nell'heap, quindi hai un riferimento. Quel riferimento viene passato per valore, il che significa che le modifiche al contenuto dell'array saranno viste dal chiamante, ma la riassegnazione dell'array non:
void Foo(int[] data) {
data[0] = 1; // caller sees this
}
void Bar(int[] data) {
data = new int[20]; // but not this
}
Se aggiungi il refmodificatore, il riferimento viene passato per riferimento e il chiamante vedrebbe una delle modifiche sopra.
Sì, vengono passati per riferimento per impostazione predefinita in C #. Tutti gli oggetti in C # lo sono, ad eccezione dei tipi di valore. Per essere un po 'più precisi, vengono passati "per riferimento per valore"; ovvero, il valore della variabile che vedi nei tuoi metodi è un riferimento all'oggetto originale passato. Questo è un piccolo punto semantico, ma a volte può essere importante.