-1

昨日、メソッドがコンソールに書き込む方法についてここで質問しました。今日、私は思ったように動作しないこの簡単な小さなプログラムを書きました。リンク内のプログラムには、コンソールに何かを書き込むためのMainメソッドからの呼び出しはありませんが、テキストはそこに表示されます。以下の小さなスニペットで同じロジックを実行しようとしましたが、何も実行されません。以下のプログラムがコンソールに「hello」という単語を書き込まないのはなぜですか?編集:ここにリンク

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

5 に答える 5

6

リンクされたプログラムは、コンソールに書き込むイベントハンドラーを持つタイマーを作成します。タイマーが「ティック」するたびに、が呼び出されますTimerHandler

質問に投稿したコードには、そのようなものはありませんWriteIt。形や形式を問わず、何も参照していません。

于 2012-09-25T16:52:12.947 に答える
2

以下のプログラムがコンソールに「hello」という単語を書き込まないのはなぜですか?

WriteItでメソッドを呼び出すことはないMainため、使用されることはありません。

コードを変更して呼び出します。つまり、次のようになります。

static void Main(string[] args)
{
    WriteIt("World"); // Call this method
于 2012-09-25T16:52:19.010 に答える
2

リンクされた質問では、メソッドはで設定さTimerHandlerれたインスタンスによって呼び出されます。このプログラムでは何も呼び出されないため、呼び出されることはありません。System.Timers.TimerMainWriteItMain

// 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
}
于 2012-09-25T16:53:15.663 に答える
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
于 2012-09-25T16:53:21.323 に答える
1

WriteItからメソッドを呼び出すことはありませんMain

内部Mainでは、メソッドを呼び出す必要があります。

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

注:メソッドは実際にはパラメータWriteItを必要としません。stringどこにも渡された値を使用していません。渡された文字列をに書き込むかConsole、パラメータをまったく持たないようにする必要があります。

于 2012-09-25T16:52:13.770 に答える