0

我是 C# 的新手,我刚从 PHP 来。

具体来说,让我“复制/粘贴”我难以理解的代码。

我有一个函数,它从“当前年份”中减去“出生年份”并返回更新的年龄。现在,我需要检查用户的年龄是否小于 30 岁以打印出“您太年轻,无法查看此页面”消息,然后询问他/她是否想继续回答其余问题。然后我们根据答案做出决定。如果答案是“是”,我们如下所示,继续。现在我想知道,但是如果用户说“不”怎么办?如何中断代码?

例如,在 PHP 中,我曾经输入这个 - “exit()”。

提前致谢。

        if (ma.HowOldImI(date1, date2) < 30)
        {
            Console.WriteLine("you are too young to view this page");

            Console.WriteLine("would you like to continue the session?");

            string confirm = Console.ReadLine();

            if (confirm == "yes")
            {
                Console.WriteLine("Please type your name");
                string nm = Console.ReadLine();
                Console.WriteLine("Please type your born year");
                int ag = Convert.ToInt16(Console.ReadLine());

                gr.YouWereBorn(nm, ag);
            }
        }
        else
        {
            Console.WriteLine("You are " + ma.HowOldImI(date1, date2) + " years old\n");
        }
4

4 回答 4

3

如果要退出函数,只需执行“return;”即可

例如

    if (ma.HowOldImI(date1, date2) < 30)
    {
        Console.WriteLine("you are too young to view this page");

        Console.WriteLine("would you like to continue the session?");

        string confirm = Console.ReadLine();

        if (confirm == "yes")
        {
            Console.WriteLine("Please type your name");
            string nm = Console.ReadLine();
            Console.WriteLine("Please type your born year");
            int ag = Convert.ToInt16(Console.ReadLine());

            gr.YouWereBorn(nm, ag);
        }
        else
        {
            return;
        }
    }
    else
    {
        Console.WriteLine("You are " + ma.HowOldImI(date1, date2) + " years old\n");
    }

如果您需要停止当前的消息泵只需Application.Exit();使用Environment.Exit(0);

于 2012-08-06T13:51:42.240 回答
2

您可以采取的选项很少,其他用户已经说过,但我的目的是尝试解释哪些选项最适合您的情况。

首先,我假设您正在使用控制台应用程序(纯粹基于您使用Console.ReadLine().

考虑到这一点,我们知道您Main(string args[])在某处有一种方法。那么第一个问题是,你的代码片段是直接用在这个Main()函数中的吗?

如果是这样,那么您可能已经知道,一旦程序到达函数的末尾,程序就会退出。但是,知道您可以使用return语句提前结束任何函数的流程是很有用的。

return 语句终止它出现的方法的执行,并将控制权返回给调用方法。它还可以返回可选表达式的值。如果方法是 void 类型,则可以省略 return 语句。

在这种情况下void使用,因此您可以简单地使用:

return;

而不是说,例如:

return "a string";

如果您的代码逻辑在另一个函数中(由函数调用的main()函数),那么您不能简单地从函数返回以结束程序(尽管这可能是结果),因为您的主函数中的任何进一步代码仍然需要被执行。

已经建议的其他方法,例如Application.Exit()并且Environment.Exit()会给您结束应用程序的预期效果,但我建议不要直接使用这些方法,因为它不会给用户任何好的反馈。但是,您可以创建一个小包装函数来结束应用程序,例如:

public void EndApplication()
{
   Console.WriteLine("You have chosen to end the application, hit enter to say Goodbye...");
   Console.ReadLine();
   Environment.Exit(0);
}

然后可以从您选择的任何地方调用它(如果您需要,这里有一些备用错误代码)。

但是,我更愿意让应用程序自然地流过该Main()函数,并在最后显示您的告别信息。return;选择在子函数中使用语句,例如:

public void Main(string[] args)
{
   DoMyWork();

   Console.WriteLine("You have chosen to end the application, hit enter to say Goodbye...");
   Console.ReadLine();
}

private void DoMyWork()
{
   //...

   string confirm = Console.ReadLine();

   if(confirm.ToLower() == "no")
   {
      return;//no need to continue with this function
   }

   //carry on with you logic
   Console.WriteLine("Please type your name");

   //...
} 
于 2012-08-06T14:24:07.710 回答
0

如果用户说不,请仔细查看代码。请输入姓名等的逻辑被跳过,函数退出。如果没有,那么按照大家说的做:

return;
于 2012-08-06T13:52:30.207 回答
0

您可以尝试使用此代码 - 添加返回

    if (confirm == "yes")
    {
        Console.WriteLine("Please type your name");
        string nm = Console.ReadLine();
        Console.WriteLine("Please type your born year");
        int ag = Convert.ToInt16(Console.ReadLine());

        gr.YouWereBorn(nm, ag);
    }
    else
    {
        return;
    }
于 2012-08-06T13:53:11.553 回答