2012-08-06 109 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