离开方法时如何保存变量值?

时间:2017-05-27 09:52:43

标签: c#

我有一种方法可以计算用户从atm退出的次数(因为有限制),并且还计算用户当天提取的金额。但是,在离开方法时,count var和amountWithdrawn变量中的值都会丢失,如何保留它们并保存#34;?
另外作为旁注,我有一个名为Account的班级,有平衡等等,最好把它们放在那里吗?但是也想知道是否可以将变量保存在方法中以供将来参考。

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;
    }
}

3 个答案:

答案 0 :(得分:1)

我建议您需要将这些变量放在Account类中,我建议您可以将withdraw方法本身放在Account类中,这可能是更多的OOP友好。

并保存timesWithdrawn号码,您只需将其设为类实例可视,而不是将其设为本地变量

这是代码

class Account
{
    public decimal CurrentBalance { get; set; }
    public int timesWithdrawn { get; set; } = 9;

    public decimal WithDraw()
    {
        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 <= 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(CurrentBalance);
            Console.WriteLine("Withdrawing {0} pounds.", money);
            Console.WriteLine("You have {0} remaining in your account.", CurrentBalance - money);
            amountWithdrawnToday += money;
            timesWithdrawn += 1;
            Console.WriteLine("{0} pounds withdrawn today", amountWithdrawnToday);
            return CurrentBalance -= money;
        }
        else
        {
            Console.WriteLine("You have exceeded daily withdrawls. You have withdrawn {0}", amountWithdrawnToday);
            return amountWithdrawnToday;
        }
    }
}

正如您从代码中注意到的那样,我删除了对account变量的引用,并将CurrentBalance设为实例变量以及timesWithdrawn。< / p>

即使在方法完成后,这也可以保留timesWithdrawn的值。

答案 1 :(得分:0)

只要程序正在运行,它就会保存在那里,但是一旦完全重置,所以是的,你必须将它保存在数据库中的excel表或文本文档中 Saving data to a file in C#

如果您需要一些帮助,请查看此内容

答案 2 :(得分:0)

你可以将'out'参数传递给函数,它基本上是你发送给函数的变量,它在函数外部保存它的值。 例如:

public void WithDraw(out int c) {
    c = something ; //c must receive a value during the call
}  

int myvar; // the parameter which will hold the value when the function returns

WithDraw(out myvar);  //call to the function

myvar  //will now hold a value from the function (something)

您还可以考虑返回一个元组,或者将您想要保存的值放入“全局变量”中。