C#if / else线程中断

时间:2012-08-06 13:49:26

标签: c#

我是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 个答案:

答案 0 :(得分:3)

如果要退出该功能,只需执行“return;”

e.g。

    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); This article提供一个体面的概述两个。

答案 1 :(得分: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);
}

然后可以从您选择的任何地方调用(如果您需要,可以here are some alternate error codes)。

但是,我更愿意让应用程序自然地通过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");

   //...
} 

答案 2 :(得分:0)

如果用户拒绝,请仔细查看代码。请跳过请输入名称等的逻辑,然后退出该功能。如果没有,那么按照每个人的说法做:

return;

答案 3 :(得分: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;
    }