2012-09-25 102 views
-1

昨天我問了一個問題here關於一個方法如何寫入控制檯。今天,我寫了這個快速的小程序,不像我認爲的那樣工作。鏈接中的程序從來沒有從Main方法調用任何東西寫入控制檯,但文本將出現在那裏。我試圖用下面的小片段來遵循相同的邏輯,它什麼都不做。爲什麼下面的程序沒有在控制檯上寫下「hello」字樣?編輯:link here從方法打印字符串到控制檯.NET 4.0

using System; 
class DaysInMonth 
{ 
    static void Main(string[] args) 
    { 
     int[] DaysInMonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; 
     Console.Write("enter the number of the month: "); 
     int month = Convert.ToInt32(Console.ReadLine()); 
     Console.WriteLine("that month has {0} days", DaysInMonth[month - 1]); 

    } 
    static void WriteIt(string s) 
    { 
     string str = "hello"; 
     Console.WriteLine(str); 
    } 
} 
+0

我剛剛測試了代碼,它實際寫入控制檯。也許你想暫停執行,所以你可以在最後使用'Console.Read();'看到它。從你的Main調用'WriteIt'。 –

+0

在你的Main方法中,你沒有調用WriteIt方法,所以它永遠不會打印「hello」。 – tomasmcguinness

+0

我認爲你是非常困惑。你甚至不會調用「WriteIt」方法。 –

回答

6

鏈接的程序創建有一個事件處理程序,其寫入控制檯的計時器。每當計時器「滴答」,它都會打電話給TimerHandler

您在問題中發佈的代碼沒有任何類似的內容 - 沒有任何形式或形式的WriteIt

+0

我認爲罪魁禍首是我甚至不理解處理程序。當我調用'WriteIt(「並在此添加文本」)時,引擎蓋下會發生什麼?我看到只有方法本身中的文本才被打印出來。 – wootscootinboogie

+0

@wootscootinboogie:對不起,從您的評論中不清楚您要求的內容,或者您​​所說的「僅打印方法本身中的文本」的含義。 –

+0

如果我輸入'WriteIt(「adfkadf」);在Main中,我仍然可以看到打印到控制檯的方法內的任何字符串。 – wootscootinboogie

1

你永遠從Main

呼喚你WriteIt方法內Main你應該調用方法:

static void Main(string[] args) 
{ 
    WriteIt("Hello"); 
} 

作爲一個說明:您WriteIt方法並不真正需要的string參數。你沒有使用任何地方傳遞的值。您應該將傳入的字符串寫入Console,或者根本沒有參數。

+0

謝謝。令人困惑的是,我不明白事件處理程序,並且我沒有在Main方法中看到類似'TimerHandler()'的東西 – wootscootinboogie

2

爲什麼下面的程序沒有在控制檯上寫「hello」這個詞?

你永遠不會在你的Main中調用WriteIt方法,所以它永遠不會被使用。

更改您的代碼來調用它,即:

static void Main(string[] args) 
{ 
    WriteIt("World"); // Call this method 
2

在鏈接的問題的方法TimerHandlerSystem.Timers.Timer比如在Main成立調用。在此程序的Main中沒有任何內容會調用WriteIt,因此永遠不會調用它。

// In the linked question's Main method 
// Every time one second goes by the TimerHandler will be called 
// by the Timer instance. 
Timer tmr = new Timer(); 
tmr.Elapsed += new ElapsedEventHandler(TimerHandler); 
tmr.Interval = 1000; 
tmr.Start(); 

爲了使它工作,你只需要調用WriteIt

static void Main(string[] args) 
{ 
    int[] DaysInMonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; 
    Console.Write("enter the number of the month: "); 
    int month = Convert.ToInt32(Console.ReadLine()); 
    Console.WriteLine("that month has {0} days", DaysInMonth[month - 1]); 
    WriteIt("Greetings!"); // Now it runs 
} 
+0

如果我嘗試在WriteIt()中沒有參數進行編譯,我得到一個錯誤。我必須在那裏插入某種字符串。 – wootscootinboogie

+0

Gah - 現在修復 - 謝謝! –

1

因爲你不調用該方法WriteIt

int[] DaysInMonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; 
Console.Write("enter the number of the month: "); 
int month = Convert.ToInt32(Console.ReadLine()); 
Console.WriteLine("that month has {0} days", DaysInMonth[month - 1]); 
WriteIt("some string"); <====== //add this 
相關問題