2012-08-06 36 views
0

我是C#的新手,我刚刚来自PHP。C#if/else线程中断

具体而言,让我“复制/粘贴”一段难以理解的代码。

我有一个函数,它从“当前年份”中减去“出生年份”并返回更新年龄的年份。现在,我需要检查用户的年龄是否低于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"); 
     } 
+1

要退出方法,您需要“返回” – seekerOfKnowledge 2012-08-06 13:51:42

+0

“如何中断代码”是什么意思?这是控制台应用程序的主要功能吗?在从main调用的过程中?当代码被“中断”时,你想要做什么? – JTMon 2012-08-06 13:54:30

+0

最终的应用程序是否也将成为控制台应用程序? – 2012-08-06 13:54:30

回答

3

如果你想退出该功能,只需做一个“返回”;

例如

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

如果您需要在当前消息泵停止,只是如果你想用适当的代码使用Environment.Exit(0);This article提供了两者之间的差异的一个体面的概述,以退出该应用程序使用Application.Exit();

+1

如果代码在'Main'里面,实际上 – 2012-08-06 13:52:20

+1

只有理由我没有说我的评论是答案,是.... ^^^安德烈说的。 – seekerOfKnowledge 2012-08-06 13:52:33

+1

如果他们用另一种方法调用粘贴的代码,那么它不会退出程序。 – seekerOfKnowledge 2012-08-06 13:52:53

0

看代码,如果用户说不。请输入姓名等的逻辑被跳过,并退出该功能。如果没有,那么做是大家说的有:

return; 
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; 
    } 
+0

非常感谢你的兄弟。这些信息解决了我的问题。 – Akbaroff 2012-08-07 07:25:01

+0

我很乐意为您提供帮助Akbaroff – 2012-08-07 07:42:47

2

有哪些已经被对方表示可以采取几个选项,用户,但我的目标是尝试解释哪些最适合您的情况。

首先,我假设你是一个控制台应用程序(基于纯粹使用Console.ReadLine()其实工作。

考虑到这一点,我们知道你有Main(string args[])方法周围铺设的地方。所以,第一个问题是,你的代码片段直接用在Main()函数中吗?

如果是这样,那么你可能已经知道,一旦程序到达函数的末尾,程序就会退出然而,知道你可以通过使用return声明过早结束任何功能的流程。

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

在这种情况下void使用这样你就可以简单的使用:

return; 

,而不是说,例如:

return "a string"; 

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

已经建议的其他方法,如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"); 

    //... 
} 
+0

Mate,谢谢,非常感谢你的详细的一步一步的解释,我真的很感激。就像我之前说过的,我是一个新手,所以我必须习惯使用“pplication.Exit()和Environment.Exit()”并深入学习它们。 – Akbaroff 2012-08-06 16:44:51

+0

@Akbaroff:如果我的答案或其他答案对你有帮助。你应该考虑让你喜欢的任何一个被接受。这将有助于提高您的声誉,并允许您在StackOverflow网站上做更多的事情。一旦你有15个代表,你甚至可以开始upvoting多个答案,你找到了帮助你。 – musefan 2012-08-07 07:42:06