C# 在if语句C中保存值#

C# 在if语句C中保存值#,c#,C#,我是C#的新手,我在编写一个程序时遇到了一些困难,该程序将允许您在变量中保存值,一切正常,只是我无法将值保存到变量中。代码如下: while (true) { //Menu Console.WriteLine (" \n\tWelcome!"); Console.WriteLine (" \t[1]Store value"); Console.WriteLine (" \t[2]Write message"); Console.WriteLine (" \

我是C#的新手,我在编写一个程序时遇到了一些困难,该程序将允许您在变量中保存值,一切正常,只是我无法将值保存到变量中。代码如下:

while (true)
{
    //Menu
    Console.WriteLine (" \n\tWelcome!");
    Console.WriteLine (" \t[1]Store value");
    Console.WriteLine (" \t[2]Write message");
    Console.WriteLine (" \t[3]Clear the console");
    Console.WriteLine (" \t[4]Shut down program");
    Console.Write("\tChoose: ");

    //Users choice
    int choice = Convert.ToInt32 (Console.ReadLine ());
    //Users message
    string usrMsg = null;

    //if statement 
    if (choice == 1) {
        usrMsg += Console.ReadLine ();
    } else if (choice == 2) {
        Console.WriteLine (usrMsg);
    } else if (choice == 3) {
        //Shuts down program
        break;
    } else if (choice == 4) {
        //Clear program
        Console.Clear ();
    } 
    else 
    {
        Console.WriteLine("please enter a number between 1-4");
    }
}

当它运行时,它总是将userMsg创建为null。这意味着当用户选择“1”时,它最多只能“保存”1个值。但是,如果用户再次进入菜单时选择“2”,则不会显示此信息,因为userMsg将再次设置为null

我的假设是,您试图保存某人选择“1”的次数,然后显示如果用户点击选项“2”

坚持这一点:

//Users message
string usrMsg = null;

在“while”循环之外。

只需将usrMsg变量作为全局变量从while块中移出,值就会被保存

        //Users message
        string usrMsg = null;

        while (true)
        {
            //Menu
            Console.WriteLine(" \n\tWelcome!");
            Console.WriteLine(" \t[1]Store value");
            Console.WriteLine(" \t[2]Write message");
            Console.WriteLine(" \t[3]Clear the console");
            Console.WriteLine(" \t[4SShut down program");
            Console.Write("\tChoose: ");

            //Users choice
            int choice = Convert.ToInt32(Console.ReadLine());


            //if statement 
            if (choice == 1)
            {
                usrMsg += Console.ReadLine();
            }
            else if (choice == 2)
            {
                Console.WriteLine(usrMsg);
            }
            else if (choice == 3)
            {
                //Shuts down program
                break;
            }
            else if (choice == 4)
            {
                //Clear program
                Console.Clear();
            }
            else
            {
                Console.WriteLine("please enter a number between 1-4");
            }
        }

你的代码有什么问题?您期望它做什么?它做什么?欢迎使用堆栈溢出。请注意,由于您在每次迭代中都创建了新的
usrMsg
,因此它不会保存旧值。除此之外,请清楚地解释我不能准确地将值保存到变量中是什么意思。首先,请阅读。
“一个允许您将值保存在变量中的程序,一切正常,但我无法将值保存到变量中”
-那么一切都不正常了?;)@Alex Consider使用<代码>切换case < /代码>代替所有的<代码>…..如果….<代码>,并输入<代码>转换。totInt32 < /代码>尝试<代码>尝试catch <代码> Bug您不匹配MeUE项3和4——当用户进入3(清除控制台)时,您休息!现在开始工作了,谢谢!还有什么方法可以清除变量吗?只需创建一个新的选项fx<代码>如果(选项==5)字符串userMsg=null@Alex-这取决于您想如何清除它。如果您希望用户能够像存储它一样清除它,那么添加另一个菜单项,并在该选项下放置userMsg=null;此外,如果这有效,请将此标记为答案。它现在正以我希望的方式工作!非常感谢!:)@亚历克斯-为什么你现在把我的答案从正确答案中删除了?我的回答是正确的,而且比哈姆泽早得多。