Ответ 1
Вам нужно явно использовать поле и "нормальное" свойство вместо свойства, которое было автоматически реализовано:
public class Bob
{
private int value;
public int Value
{
get { return value; }
set { this.value = value; }
}
}
Затем вы можете передать поле в качестве параметра out:
Int32.TryParse("123", out bob.value);
Но, конечно, это будет работать только в одном классе, так как поле является частным (и должно быть!).
Свойства просто не позволяют делать это. Даже в VB, где вы можете передать свойство по ссылке или использовать его как параметр out, в основном существует дополнительная временная переменная.
Если вам не нужно возвращать значение TryParse
, вы всегда можете написать свой собственный вспомогательный метод:
static int ParseOrDefault(string text)
{
int tmp;
int.TryParse(text, out tmp);
return tmp;
}
Затем используйте:
bob.Value = Int32Helper.ParseOrDefault("123");
Таким образом, вы можете использовать одну временную переменную, даже если вам нужно сделать это в нескольких местах.