Sono curioso di sapere come C# si comporta quando si passa il valore/tipi di riferimento in un metodo. Mi piacerebbe passare un tipo di valore in box nel metodo "AddThree". L'idea è di entrare nella funzione chiamante (Main) il risultato delle operazioni eseguite all'interno di "AddThree".Tipo di valore di boxe per inviarlo a un metodo e ottenere il risultato
static void Main(string[] args)
{
int age = 3;
object myBox = age;
AddThree(myBox);
// here myBox = 3 but I was expecting to be = 6
}
private static void AddThree(object age2)
{
age2 = (int)age2 + 3;
}
Ho provato questo con i tipi di riferimento puri come stringa e ottengo lo stesso risultato. Se "avvolgo" il mio int all'interno di una classe e io uso la classe "wrap" in questo esempio funziona come mi aspetto, cioè, ottengo myBox = 6. Se modifico la firma del metodo "AddThree" per passare il parametro per ref, questo restituisce anche 6. Ma, Non voglio modificare la firma o creare una classe wrapper, voglio solo boxare il valore.
Non c'è modo di farlo senza cambiare la firma poiché è necessario che 'age2' sia un parametro' ref'. – Lee