Il faudrait utiliser explicitement un champ et la propriété « normale » au lieu d'une mise en œuvre automatique propriété:
public class Bob
{
private int value;
public int Value
{
get { return value; }
set { this.value = value; }
}
}
Ensuite, vous pouvez passer le champ comme paramètre sur:
Int32.TryParse("123", out bob.value);
Mais bien sûr, cela ne fonctionnera dans les la même classe, car le champ est privé (et devrait l'être!).
Les propriétés ne vous permettent simplement pas de le faire. Même dans VB où peut peut passer une propriété par référence ou l'utiliser comme un paramètre out, il existe essentiellement une variable temporaire supplémentaire.
Si vous ne se soucient pas de la valeur de retour de TryParse
, vous pouvez toujours écrire votre propre méthode d'assistance:
static int ParseOrDefault(string text)
{
int tmp;
int.TryParse(text, out tmp);
return tmp;
}
Ensuite, utilisez:
bob.Value = Int32Helper.ParseOrDefault("123");
De cette façon, vous pouvez utiliser un seul variable temporaire même si vous devez le faire à plusieurs endroits.
duplication possible de [Est-il possible de transmettre les propriétés comme paramètres "out" ou "ref"?] (Http://stackoverflow.com/questions/564557/is-it-possible-to-pass-properties-as -out-or-ref-parameters) – nawfal