2011-10-30 47 views
0

我是C#的初學者,我正在研究這個包含4個方法(包括Main())的程序。 GetValues()允許用戶輸入數組,FindAverage()計算數組的平均值,現在我想創建第三個應該顯示結果的方法'Show()'。 當我在Main()中顯示平均值時,我得到了這個工作,但是當我在Show()中執行時,沒有任何反應。在測試它時,我讓Show()顯示一條簡單的文本行「消息」,但是當我運行它時。看起來像程序跳過Show()並直接進入Main()。你們中的任何一個人可以向我解釋發生了什麼,我該怎麼做才能讓Show()顯示它的內容?爲什麼程序跳過方法?

謝謝你們!

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace testscores 
{ 
    class Program 
    {   
     private static int GetValues() 
     { 

      string inValue; 
      int[] score = new int[5]; 
      int total = 0; 


      for (int i = 0; i < score.Length; i++) 
      { 
       Console.Write("Enter Value {0}: ", i + 1); 
       inValue = Console.ReadLine(); 
       score[i] = Convert.ToInt32(inValue); 

      } 

      for (int i = 0; i < score.Length; i++) 
      { 
       total += score[i]; 

      } 
      return total; 

     } 



     //FIND AVERAGE 
     private static double FindAverage() 
     { 
      double total = GetValues(); 
      double average = total/5.0; 

      return average ; 
     } 


     //Show 

     static void Show() 
     { 
      Console.WriteLine("message"); 
      return; 
     } 


     static void Main() 
     { 
      double avg = FindAverage(); 

      Console.WriteLine("The Average is :" + avg); 
      Console.ReadKey(); 
     } 


    } 
} 
+0

你不打電話展()的任何地方...... –

+0

你可以肯定它不會「跳過」如果你調用它。我沒有看到你調用這個方法的代碼,所以你顯示的代碼是不相關的。請顯示您所描述的代碼以及您認爲問題出在哪裏。 – CodeCaster

+0

@Mitch也許我輸入的速度不如你快? – CodeCaster

回答

1

程序不會運行您鍵入的所有代碼。他們執行Main中的每個語句,並且每個方法中的每個語句都得到,由Main調用。

在你Main方法,你打電話給你的程序的這些部分:

  • FindAverage

在你FindAverage方法,你把這些其他部分:

  • 的GetValues

在您的GetValues方法中,不要調用程序的任何其他部分。

在這個鏈條中沒有任何地方你會特別呼叫Show,所以它永遠不會被調用。它只是坐在你的.exe文件中,什麼都不做。

這叫做死碼。這不是什麼大問題,但它聽起來並不是你想要的。

爲了解決這個問題,某處添加此行的代碼,在你的程序的流程,無論你想它運行:

Show(); 
+0

感謝這個問題的優秀解釋。 – okr

4

的入口點爲獨立的EXE是定義Main(...) - 就是爲什麼Main被調用。方法(具有各種可用簽名)是特殊

對於其他任何事情:您需要調用它,否則它不會發生。

有關信息,您可以使用多個這樣的Main方法,但是您需要明確告訴它哪一個(並且只有一個)是入口點。

1

修改顯示這樣的,它需要一個參數(值顯示),並在主要調用它:

static void Show(double average) 
{ 
    Console.WriteLine("The average is: {0}", average); 
} 

static void Main() 
{ 
    double avg = FindAverage(); 
    Show(avg); 
    Console.ReadKey(); 
} 
+0

謝謝它的作品!我只是把Main當作另一種方法。就像我說的,我是一個初學者。那麼基本上這段代碼中主要做什麼是初始化方法Show()及其內容? – okr

+0

主只是另一種方法。它只是聲名鵲起,它是方法執行被「包含」了。也就是說,它是第一個執行的方法,當它完成時程序退出。 –

+0

@Oskar:你在正確的軌道上,但你使用的術語並不完全正確。您初始化變量,結構和類。方法是您針對結構或類執行的操作。他們通常不被認爲是可以初始化的東西。相反,你會說你「向某個方法傳遞了價值」。在這種情況下,你告訴'Program'來顯示'avg'的值。 「平均」被「初始化」,但「顯示」不是 - 它只是被告知要顯示的內容。你也可以說「平均」被初始化了,因爲它是一個變量。 –

1

當你運行一個C#程序,.NET可以調用Main()方法。
它不會調用任何其他方法。

要執行其他方法,您需要從Main()(可能間接)調用它們。

1

每個程序啓動僅在方法Main。您不能說 程序將從方法Show開始。把你的Show方法調用Main

此外,什麼可能對你有些陌生:

爲了給出一個值的方法,添加它當您啓動方法。例如:

static void Show(double value){ 

} 

然後調用:

Show(avg); // Gives the variable "avg" to Show 
相關問題