2010-06-16 30 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()) 
{ 
     ... 
} 
相关问题