[英]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.