using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;
using System.IO;
namespace TimerApp4
{
class Program
{
public static int k;
static void Main(string[] args)
{
Timer t = new Timer(1000);
t.Elapsed += new ElapsedEventHandler(SaniyelikIs);
t.Start();
k = 0;
Console.Read();
}
static void SaniyelikIs(object o, ElapsedEventArgs a)
{
TextWriter tw = null;
k++;
if (k == 0)
{
tw = new StreamWriter("TextFile1.txt");
// write a line of text to the file
tw.WriteLine(DateTime.Now);
}
else
tw.WriteLine(DateTime.Now);
// close the stream
tw.Close();
}
}
}
我可以运行它但是“new StreamWriter(”TextFile1.txt“); “给我错误:未分配的局部变量。这就是结果。我怎么能这样呢
答案 0 :(得分:3)
您只是在if语句的StreamWriter
一半中创建true
。如果它是这样的话,你的代码看起来会更好:
TextWriter tw = new StreamWriter("TextFile1.txt");
k++;
if (k == 0)
{
// write a line of text to the file
}
tw.WriteLine(DateTime.Now);
// close the stream
tw.Close();
但是,我也注意到您将k
初始化为零并且只是递增它,因此if (k == 0)
只会评估为false
。
答案 1 :(得分:0)
问题在于你使用k的逻辑:
k++;
if (k == 0)
在if块之前递增k,这意味着未实例化实例化StreamWriter的“if(k == 0)”块。它改为尝试使用tw的else块,但它实际上并未实例化(仍为null)。