[英]How can i do re coding without assign null value?
我如何在不分配空值“ Tex = null”的情况下执行以下操作?
static void Main(string[] args)
{
FileInfo f = new FileInfo("C:/temp/Arungg.txt");
StreamWriter Tex;
Tex = null;
if (!f.Exists)
{
f.CreateText();
}
else
{
Tex = f.AppendText();
}
Tex.WriteLine("Test1");
Tex.WriteLine("Test2");
Tex.Write(Tex.NewLine);
Tex.Close();
Console.WriteLine(" The Text file named Arungg is created ");
}
您需要确保在每个代码路径中都分配了Tex
。
if (!f.Exists)
{
Tex = f.CreateText();
}
请注意,如果文件不存在,则AppendText
方法将创建该文件。
因此,您根本不需要if
语句。
static void Main(string[] args)
{
FileInfo f = new FileInfo("C:/temp/Arungg.txt");
StreamWriter Tex = f.Exists ? f.AppendText() : f.CreateText();
Tex.WriteLine("Test1");
Tex.WriteLine("Test2");
Tex.Write(Tex.NewLine);
Tex.Close();
Console.WriteLine(" The Text file named Arungg is created ");
}
用类似这样的东西替换您拥有的东西。
using (StreamWriter Tex = new StreamWriter("C:/temp/Arungg.txt", true, Encoding.UTF8))
{
Tex.WriteLine("Test1");
Tex.WriteLine("Test2");
Tex.Write(Tex.NewLine);
Console.WriteLine(" The Text file named Arungg is created ");
}
如果文件不存在,则将创建该文件;如果文件不存在,则将其打开以进行追加。 没有if
有必要,没有代码不会编译(如您的样品中),你会得到资源的妥善处置。
Tex = f.Exists? f.AppendText(): f.CreateText();
你不能 如果f.Exists为假,则在if块之后使用Tex之前永远不会设置它,因此您必须为其分配一些内容。
我也很确定在这种情况下也会收到NullReferenceException,所以您确定不只是要在if块中分配Tex吗?
编辑:我总是截断文件:)
var f = new FileInfo(@"c:\temp\Arungg.txt");
var writer = f.Exists ? f.AppendText() : new StreamWriter(f.OpenWrite());
using (writer)
{
writer.WriteLine("Test1");
writer.WriteLine("Test2");
writer.WriteLine(); // No need for NewLine
}
如果您不实例化StreamWriter,它将对您造成轰炸。 您需要分配一个值才能进行编译,但是如果没有实例,它就不会做您认为会做的事情。
也许简化并考虑使用File.WriteAllText ?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.