Musiałbyś jawnie użyć pola i „zwykłej” właściwości zamiast właściwości zaimplementowanej automatycznie:
public class Bob
{
private int value;
public int Value
{
get { return value; }
set { this.value = value; }
}
}
Następnie możesz przekazać pole jako parametr wyjściowy:
Int32.TryParse("123", out bob.value);
Ale oczywiście zadziała to tylko w ramach tej samej klasy, ponieważ pole jest prywatne (i powinno być!).
Nieruchomości po prostu na to nie pozwalają. Nawet w VB, gdzie można przekazać właściwość przez odniesienie lub użyć jej jako parametru out, istnieje w zasadzie dodatkowa zmienna tymczasowa.
Jeśli nie dbałeś o zwracaną wartość TryParse
, zawsze możesz napisać własną metodę pomocniczą:
static int ParseOrDefault(string text)
{
int tmp;
int.TryParse(text, out tmp);
return tmp;
}
Następnie użyj:
bob.Value = Int32Helper.ParseOrDefault("123");
W ten sposób możesz użyć jednej zmiennej tymczasowej, nawet jeśli musisz to zrobić w wielu miejscach.