Sobes.tech
Junior — Middle

Spiega le differenze tra i processi di distribuzione e confezionamento degli oggetti, così come tra il passaggio di parametri per riferimento e per valore nel contesto del lavoro con tipi di riferimento e strutture.

sobes.tech AI

Risposta dell'AI

In C#:

Boxing (involucro) — processo di convertire un valore di tipo (tipo di valore, ad esempio, una struttura) in un oggetto di tipo riferimento (object). Questo crea una copia del valore nell'heap.

Unboxing (sbobinatura) — processo inverso, estrazione del valore dall’oggetto di nuovo nel tipo di valore.

Esempio:

int x = 123;          // tipo di valore
object o = x;         // boxing
int y = (int)o;       // unboxing

Passaggio dei parametri:

  • Per valore (predefinito per i tipi di valore): il valore viene copiato, le modifiche all’interno del metodo non influenzano l’originale.
  • Per riferimento (ref, out): viene passata la referenza alla variabile, le modifiche all’interno del metodo influenzano l’originale.

Per i tipi di riferimento, viene passata una copia della referenza, ma non dell’oggetto. Le modifiche ai campi dell’oggetto all’interno del metodo sono visibili dall’esterno, ma la riassegnazione della referenza no.

In sintesi:

  • Embedding — avvolgere un tipo di valore in un object.
  • Sbobinatura — estrarre il tipo di valore dall’object.
  • Passaggio per valore — copia dei dati.
  • Passaggio per riferimento — passare la referenza ai dati.