从.NET 4.0方法将字符串打印到控制台

时间:2012-09-25 16:50:19

标签: c#

昨天我问了一个关于方法如何写入控制台的问题here。今天,我写了这个快速的小程序,它不像我想的那样工作。链接中的程序永远不会从Main方法调用任何东西到控制台,但文本将出现在那里。我尝试使用下面的小片段遵循相同的逻辑,它没有做任何事情。为什么下面的程序没有向控制台写“hello”这个词?编辑:link here

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

5 个答案:

答案 0 :(得分:6)

链接程序创建一个计时器,该计时器具有写入控制台的事件处理程序。每当计时器“滴答”时,它将调用TimerHandler

您在问题中发布的代码没有类似内容 - 任何方式,形状或形式都没有引用WriteIt

答案 1 :(得分:2)

  

为什么下面的程序不是在控制台上写“hello”这个词?

您永远不会在WriteIt中调用Main方法,因此从未使用过。

更改您的代码以进行调用,即:

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

答案 2 :(得分:2)

在链接的问题中,方法TimerHandlerSystem.Timers.Timer中设置的Main实例调用。在此程序的WriteIt中没有任何内容调用Main,因此永远不会调用它。

// 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
}

答案 3 :(得分:1)

您永远不会从WriteIt

调用Main方法

Main内你应该调用方法:

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

注意:您的WriteIt方法实际上并不需要string参数。你没有使用任何地方传递的值。您应该将传入的字符串写入Console,或者根本没有参数。

答案 4 :(得分: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