2017-03-26 4 views
0

J'essaie actuellement de mettre en œuvre des propriétés et en particulier de limiter mon setter. Par exemple, j'ai un champ flottant 'Money' que je voudrais pour que vous puissiez y ajouter/soustraire des valeurs mais quand il est à 0, faites en sorte qu'il ne puisse plus être soustrait mais il peut néanmoins être ajouté.C# Limitation de la valeur du setter

Je vois que dans le code ci-dessous, une fois que 'Money' atteint 0, il sera toujours bloqué à 0. Y a-t-il un moyen de vérifier si le setter est ajouté? Je comprends que vous pouvez le vérifier dans les méthodes AddMoney ou SubtractMoney mais était plus curieux de savoir si c'est possible dans le setter.

public float Money { 
    get { 
     return this._money; 
    } 

    set { 

     if (_money <= 0){ 
      _money = 0; 
     } else { 
      _money = value; 
     } 
    } 
} 

void AddMoney(float addAmount){ 
    Money += addAmount; 
} 

void SubtractMoney(float subtractAmount){ 
    Money -= subtractAmount; 
} 
+1

Vous pouvez vérifier si le 'value' est négatif ... –

+1

Side note: Je soupçonne fortement que votre affectation vous demande de valider un autre endroit plutôt qu'un setter ... –

+1

ne jamais jamais jamais jamais jamais stocker de l'argent dans des flotteurs. utiliser décimal –

Répondre

1

Essayez de tester si la valeur est négative ne change pas la valeur Money:

 set { 

       if (value >= 0) 
       { 
        _money = value; 
       } 
       else 
       { 
       //You may throw exception, or log a warning 
       } 
      }