昨天我问了一个关于方法如何写入控制台的问题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);
}
}
答案 0 :(得分:6)
链接程序创建一个计时器,该计时器具有写入控制台的事件处理程序。每当计时器“滴答”时,它将调用TimerHandler
。
您在问题中发布的代码没有类似内容 - 任何方式,形状或形式都没有引用WriteIt
。
答案 1 :(得分:2)
为什么下面的程序不是在控制台上写“hello”这个词?
您永远不会在WriteIt
中调用Main
方法,因此从未使用过。
更改您的代码以进行调用,即:
static void Main(string[] args)
{
WriteIt("World"); // Call this method
答案 2 :(得分:2)
在链接的问题中,方法TimerHandler
由System.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