Ich habe eine Methode, die die Anzahl der Zeiten zählt, die ein Benutzer von der ATM zurückgezogen hat (wie es ein Limit gibt) und zählt auch die Menge an Geld, die der Benutzer an dem Tag zurückgezogen hat. Die Werte in der Variablen "var" und in der Variablen "amountWithdrawn
" gehen jedoch beim Verlassen der Methode verloren. Wie behalte ich sie "gespeichert"?
Auch als eine Randnotiz, habe ich eine Klasse namens Account
, die die Balance hat und solche, wäre es am besten, sie dort zu setzen? Möchte aber auch wissen, ob es möglich ist, die Variablen in der Methode zur späteren Referenz zu speichern.Wie kann ein Variablenwert beim Verlassen der Methode gespeichert werden?
public decimal WithDraw()
{
int timesWithdrawn = 9;
decimal amountWithdrawnToday = 0;
decimal money = 0;
bool success = false;
if (timesWithdrawn < 10)
{
do
{
//Console.WriteLine("{0} available to withdraw.", FundsAvailable);
Console.WriteLine("How much would you like to withdraw?");
try
{
money = decimal.Parse(Console.ReadLine());
if (money % 5 == 0 && money <= account.CurrentBalance && money <= 1000)
{
success = true;
}
if (money == 0)
{
bool exit = true;
Console.WriteLine("Do you want to exit? Type \"yes\", or \"no\".");
while (exit == true)
{
string response = Console.ReadLine();
if (response.ToLower() == "yes")
{
break;
}
else
{
exit = false;
}
}
}
}
catch (FormatException)
{
Console.WriteLine("Please enter a number to withdraw.");
}
} while (success == false);
//do while this is true
Console.WriteLine(account.CurrentBalance);
Console.WriteLine("Withdrawing {0} pounds.", money);
Console.WriteLine("You have {0} remaining in your account.", account.CurrentBalance - money);
amountWithdrawnToday += money;
timesWithdrawn += 1;
Console.WriteLine("{0} pounds withdrawn today", amountWithdrawnToday);
return account.CurrentBalance -= money;
}
else
{
Console.WriteLine("You have exceeded daily withdrawls. You have withdrawn {0}", amountWithdrawnToday);
return amountWithdrawnToday;
}
}
Es scheint mir, dass es für diese spezielle Verwendung besser wäre, die Kontoklasse zu verwenden, da sie Informationen über das Konto enthält. Außerdem ist es möglich, eine "Wrapper" -Klasse zu erstellen, um von der Methode zurückzukommen, die alle außerhalb der Methode benötigten Informationen enthält. Eine weitere Option ist die Verwendung von out- oder ref-Parametern. Senden von Parametern ändert sie in dem Kontext, aus dem sie gesendet wurden. Sie können mehr darüber lesen Sie hier [Link] (https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/method-parameters) –