【问题标题】:How can i do re coding without assign null value?如何在不分配空值的情况下重新编码?
【发布时间】:2010-06-16 14:19:32
【问题描述】:

如果不分配空值“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 ");


        }

【问题讨论】:

    标签: c# .net visual-studio visual-studio-2008


    【解决方案1】:

    您需要确保在每个代码路径中都分配了Tex

            if (!f.Exists)
            {
                Tex = f.CreateText();
            }
    

    请注意,如果文件不存在,AppendText 方法将创建该文件。
    因此,您根本不需要if 语句。

    【讨论】:

      【解决方案2】:
      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 ");
          }
      

      【讨论】:

        【解决方案3】:

        用类似的东西替换你所拥有的。

        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,没有无法编译的代码(如您的示例),并且您可以正确处理资源。

        【讨论】:

          【解决方案4】:
          Tex = f.Exists? f.AppendText(): f.CreateText();
          

          【讨论】:

            【解决方案5】:

            你不能。如果 f.Exists 为 false,则在 if 块之后使用 Tex 之前永远不会设置它,因此您必须为其分配一些东西。

            我也很确定在这种情况下你也会得到 NullReferenceException,所以你确定你不只是想在你的 if 块中分配 Tex 吗?

            【讨论】:

              【解决方案6】:

              编辑:我总是截断文件:)

                      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
                      }
              

              【讨论】:

              • 也许,但您使用writer.WriteLine(); 本身就是一种改进。
              【解决方案7】:

              如果你不实例化你的 StreamWriter,它会轰炸你。您需要分配一个值以使其编译,但如果没有实例,它就不会按照您的想法执行。

              也许简化和consider using File.WriteAllText

              【讨论】:

                猜你喜欢
                • 2020-02-11
                • 1970-01-01
                • 1970-01-01
                • 2013-12-02
                • 2012-12-05
                • 1970-01-01
                • 2011-04-26
                • 1970-01-01
                • 2014-01-28
                相关资源
                最近更新 更多