gpt4 book ai didi

c# - 在循环中维护变量中的数据

转载 作者:太空宇宙 更新时间:2023-11-03 22:35:07 25 4
gpt4 key购买 nike

我的代码遇到的问题是,它打开文件夹中的一个文件并读取第一行,如果它是标题 (HDR),那么它会将那行分配给 currentHDR 变量,然后它将搜索对于文件上的错误,它忽略了两个已知的常见错误,如果有错误,它应该将行 currentHDR 和该行写入报告文件,然后它将 currnetHDR 分配给当前变量。这是为了确保当它检查同一文件的下一个时,在不写入标题行的情况下写入任何进一步的错误。当它完成并打开新文件时,应该仍然有一些东西分配给“current”,这就是为什么它检查 current 是否不为空,如果是,它使 current 为空。并继续循环。

这是代码:

private string folderPath;
private object file;
public string current { get; private set; }
public string currentHDR { get; private set; }

public void Main()
{
folderPath = "C:\\data\\";

foreach (string pathToFile in Directory.EnumerateFiles(folderPath, "*.BER"))
{
using (System.IO.StreamWriter file =
new System.IO.StreamWriter(@"c:\data\newreport.txt", true))
{
foreach (var line in File.ReadLines(pathToFile))
{
if (line.Contains("HDR") && current == null)
{
string currentHDR = line;
}
else if (line.Contains("HDR") && current != null)
{
string currentHDR = line;
current = "";
}

if (line.Contains("ERR~") && line.Contains("Warnings exist"))
{ }
else
{
if (line.Contains("ERR~") && line.Contains("DEPARTPORT"))
{ }
else
{
if (line.Contains("ERR~WARNING") && current == null)
{
file.WriteLine(currentHDR);
file.WriteLine(line);
current = currentHDR;
}
else if (line.Contains("ERR~WARNING") && current != null)
{
file.WriteLine(line);
}
}
}
}
}
}
}

目前的结果文件如下所示:

ERR~WARNING - SHP.TPTCTRY () cannot be empty for SHP.TPTID (xxx);

ERR~WARNING - SHP.TPTCTRY () cannot be empty for SHP.TPTID (xxx);

这清楚地表明 currentHDR 在尝试将该行写入文件时是空的。据我所见,当它通过循环时,它似乎不会继续将值保存在变量中。

我是不是误解了这是怎么失败的?

最佳答案

问题在于这些行:

if (line.Contains("HDR") && current == null)
{
string currentHDR = line;
}
else if (line.Contains("HDR") && current != null)
{
string currentHDR = line;
current = "";
}

请注意,您正在使用 string currentHDR = ...,这意味着您正在声明一个不同的 currentHDR 变量,作用域为每个 if block .删除 string 类型声明,然后您将使用您期望的 currentHDR 字段:

if (line.Contains("HDR") && current == null)
{
currentHDR = line;
}
else if (line.Contains("HDR") && current != null)
{
currentHDR = line;
current = "";
}

关于c# - 在循环中维护变量中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55615926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com