Вам доведеться явно використовувати властивість field і "normal" замість автоматично реалізованої властивості:
public class Bob
{
private int value;
public int Value
{
get { return value; }
set { this.value = value; }
}
}
Тоді ви можете передати поле як параметр out:
Int32.TryParse("123", out bob.value);
Але, звичайно, це буде працювати лише в тому ж класі, оскільки поле є приватним (і повинно бути!).
Властивості просто не дозволяють вам цього робити. Навіть у VB, де ви можете передавати властивість за посиланням або використовувати його як вихідний параметр, в основному є додаткова тимчасова змінна.
Якщо вас не хвилювало повернене значення TryParse
, ви завжди можете написати свій власний допоміжний метод:
static int ParseOrDefault(string text)
{
int tmp;
int.TryParse(text, out tmp);
return tmp;
}
Потім використовуйте:
bob.Value = Int32Helper.ParseOrDefault("123");
Таким чином, ви можете використовувати одну тимчасову змінну, навіть якщо вам потрібно це зробити в кількох місцях.