data.txt 中保存到 txt 和换行的 c# 问题

c# problem with saving to txt and new line in data.txt

我有问题。我必须将数字保存到 txt(它的含义并不重要)。我想在数字之间添加 space。 当我尝试在没有 spaces 的情况下保存它时,效果很好 这是我没有 space

的代码
if (x_dolny > x1_sqr && x_dolny < x2_sqr)
{ 
   using (StreamWriter streamW = new StreamWriter("C:\Users\Desktop\outputdata.txt", true))
   {
      streamW.Write("1");
   }
}
else if (y_prawy < y1_sqr && y_prawy > y2_sqr)
{
   using (StreamWriter streamW = new StreamWriter("C:\Users\Desktop\outputdata.txt", true))
   {
      streamW.Write("1");
   }
}
else if (delta >= 0.0)
{
   using (StreamWriter streamW = new StreamWriter("C:\Users\Desktop\outputdata.txt", true))
   {
      streamW.Write("2");
   }
}
else
{
    using (StreamWriter streamW = new StreamWriter("C:\Users\Desktop\outputdata.txt", true))
      {
         streamW.Write("0");
      }
}
using (StreamWriter streamW = new StreamWriter("C:\Users\Desktop\outputdata.txt", true))
{
   streamW.WriteLine("New line");
}

这是截图outputdata.txt

然后我尝试添加“\t” 所以现在我有

streamW.Write("1 \t");
streamW.Write("2 \t");
streamW.Write("0 \t");

但文件看起来像这样

我不明白为什么它会打断我的台词并移到下一行... 有什么想法吗?

正如@Sinatr 在评论中提到的,这可能只是文本编辑器中的自动换行问题。

题外话,这段代码确实可以使用一些重构来使其更简单,更容易阅读和理解。

using (var streamWriter = new StreamWriter(@"C:\Users\Desktop\outputdata.txt", true))
{
    string message = "0";

    if (MessageIs1(x_dolny, x1_sqr, x2_sqr, y_prawy, y1_sqr, y2_sqr))
        message = "1";
    else if (delta >= 0.0)
        message = "2";

    streamWriter.Write(message);
    streamWriter.WriteLine("New line");
}

// ...

private static bool MessageIs1(int x_dolny, int x1_sqr, int x2_sqr, 
                               int y_prawy, int y1_sqr, int y2_sqr)
{
    return (x_dolny > x1_sqr && x_dolny < x2_sqr) 
        || (y_prawy < y1_sqr && y_prawy > y2_sqr);
}

这里有一些建议:

  1. 您在 if 语句的每个分支中甚至之后重复使用了 StreamWriter。与其多次键入 using 语句,不如将其全部封装在一个 using 语句中。尝试遵循 DRY principle(不要重复自己)。

  2. 当数据类型从赋值中显而易见时(例如创建 new 对象),您可以使用 var

  3. 尽量让你的标识符(变量名和方法名)尽可能清晰简洁。其他阅读您代码的人不必四处张望就能弄清楚您的变量或方法在做什么;从名字上应该很明显。避免使用缩写,因为其他人可能不知道缩写代表什么,或者可能会认为它有其他含义。我不知道你的变量是做什么用的,因为我看不到完整的源代码,但我肯定会重命名上面示例中的以下内容:x_dolnyx1_sqrx2_sqr , y_prawy, y1_sqr, y2_sqr, MessageIs1.

  4. 将复杂的布尔逻辑提取到一个方法中,以便在您或其他人以后需要时更容易阅读和更改。

  5. 文件路径使用verbatim string literals

  6. 尽量遵守 KISS Principle(保持简单,愚蠢)。大多数开发人员过度设计。简单的代码易于阅读、理解、维护和扩展。