Dovresti utilizzare in modo esplicito un campo e "normale" proprietà invece di un auto-implementato proprietà:
public class Bob
{
private int value;
public int Value
{
get { return value; }
set { this.value = value; }
}
}
Poi si può passare il campo come parametro out:
Int32.TryParse("123", out bob.value);
Ma, naturalmente, che funzionerà solo all'interno la stessa classe, in quanto il campo è privato (e dovrebbe essere!).
Le proprietà non consentono di farlo. Anche in VB, dove è possibile passare una proprietà per riferimento o utilizzarla come parametro out, è fondamentalmente una variabile temporanea aggiuntiva.
Se non avete a cuore il valore di ritorno di TryParse
, si può sempre scrivere il proprio metodo di supporto:
static int ParseOrDefault(string text)
{
int tmp;
int.TryParse(text, out tmp);
return tmp;
}
Quindi utilizzare:
bob.Value = Int32Helper.ParseOrDefault("123");
In questo modo è possibile utilizzare un unico variabile temporanea anche se è necessario farlo in più punti.
fonte
2009-09-02 21:34:02
possibile duplicato di [È possibile passare proprietà come parametri "out" o "ref"?] (Http://stackoverflow.com/questions/564557/is-it-possible-to-pass-properties-as -out-or-ref-parameters) – nawfal