2010-06-16 22 views
-1

如果我嘗試將以下數據添加到任何文本文件錯誤occyred:「NullReferenceException未處理。」 Tex.Writeline(li)發生錯誤。 。 。 。我該如何解決NullReferenceException在文本writelne事件中未處理?

細節:未將對象引用設置爲對象的實例。

public void WriteScript(List myTextList) 
     { 
      FileInfo f = new FileInfo(@"C:\temp\Scripts.txt"); 
      StreamWriter Tex = null; 
      if(!f.Exists) 
       f.CreateText(); 
      else 
       f.AppendText(); 
      foreach (string li in myTextList) 
      { 
       Tex.WriteLine(li); 
       Tex.Write(Tex.NewLine); 
       Tex.WriteLine("GO"); 
       Tex.Write(Tex.NewLine); 
      } 
       Tex.Close(); 
       Tex.Dispose(); 

     }
Create table ENG_PREP (ENG_PREP_ID integer PRIMARY KEY identity(1,1), [ENG_PREP_MPD_REFERENCE] nvarchar(3000) , [ENG_PREP_TASK_DESCRIPTION] nvarchar(3000) , [ENG_PREP_ZONE] nvarchar(3000) , [ENG_PREP_SUBZONE] nvarchar(3000) , [ENG_PREP_PREPERATION_NO#] nvarchar(3000) , [ENG_PREP_PREPERATION_DESCRIPTION] nvarchar(3000) , [ENG_PREP_RELATED_PREPERATION] nvarchar(3000) , [ENG_PREP_OPEN_MH] nvarchar(3000) , [ENG_PREP_CLOSE_MH] nvarchar(3000) , [ENG_PREP_ESTIMATED_MH] nvarchar(3000) , [ENG_PREP_CREW_DONE] nvarchar(3000) , [ENG_PREP_SKILL_DONE] nvarchar(3000) , [ENG_PREP_MAINTENANCE_DATA] nvarchar(3000) , [ENG_PREP_EFF_A/C] nvarchar(3000) , [ENG_PREP_EFF_ENG] nvarchar(3000) , [ENG_PREP_NOTE] nvarchar(3000) , [ENG_PREP_REFERENCE] nvarchar(3000) , [ENG_PREP_ESTIMATED_MH2] nvarchar(3000) , [ENG_PREP_MH] nvarchar(3000) , [ENG_PREP_CONTROL] nvarchar(3000) )
+4

你是德州分配NULL ...你不希望一個StreamWriter對象分配給它? – Lazarus 2010-06-16 14:56:37

回答

6

你沒有初始化德州變量,所以你基本上是這樣做的:

null.WriteLine(li); 

,並有你NullReferenceException

+1

@Shimrod,聲明'StreamWriter Tex = null;'有點把它吹出水面。 – Lazarus 2010-06-16 15:00:25

+0

我刪除了我的評論,沒有正確閱讀,你完全正確。 – Shimrod 2010-06-16 15:02:30

2

改變你的線條

if(!f.Exists) 
    f.CreateText(); 
else 
    f.AppendText(); 

通過

if(!f.Exists) 
    Tex = f.CreateText(); 
    else 
     Tex = f.AppendText(); 

using(StreamWriter Tex = f.Exists?f.AppendText():f.CreateText()) 
{ 
     ... 
} 
相關問題