Ci sono momenti in cui dovrò modificare un valore passato in un metodo all'interno del metodo stesso. Un esempio potrebbe sanificare una stringa come questo metodo qui:
void SanitizeName(string Name)
{
Name = Name.ToUpper();
//now do something here with name
}
Questo è puramente innocuo poiché l'argomento Name
non viene passato per riferimento. Tuttavia, se, per qualche ragione, uno sviluppatore in futuro decide di far passare tutti i valori con ref, qualsiasi sanitizzazione della stringa influenzerà il valore al di fuori del metodo che potrebbe avere risultati dannosi.
Pertanto, invece di riassegnare l'argomento stesso, creo sempre una copia locale in questo modo:
void SanitizeName(string Name)
{
var SanitizedName = Name.ToUpper();
//now do something here with name
}
Questo assicura che cambiando il valore in cui il valore è passato non inciderà mai su ciò che accade al di fuori del metodo, ma mi chiedo se sono eccessivamente paranoico a riguardo.