Tendría que usar explícitamente un campo y una propiedad "normal" en lugar de una propiedad implementada automáticamente:
public class Bob
{
private int value;
public int Value
{
get { return value; }
set { this.value = value; }
}
}
Entonces puede pasar el campo como un parámetro de salida:
Int32.TryParse("123", out bob.value);
Pero, por supuesto, eso solo funcionará dentro de la misma clase, ya que el campo es privado (¡y debería serlo!).
Las propiedades simplemente no te permiten hacer esto. Incluso en VB, donde puede pasar una propiedad por referencia o usarla como un parámetro de salida, básicamente hay una variable temporal adicional.
Si no le importaba el valor de retorno de TryParse
, siempre puede escribir su propio método auxiliar:
static int ParseOrDefault(string text)
{
int tmp;
int.TryParse(text, out tmp);
return tmp;
}
Entonces usa:
bob.Value = Int32Helper.ParseOrDefault("123");
De esa manera, puede usar una sola variable temporal incluso si necesita hacer esto en varios lugares.