gpt4 book ai didi

c# - 如何在单个 MessageBox 中显示 foreach 循环的所有迭代?

转载 作者:太空宇宙 更新时间:2023-11-03 21:50:41 26 4
gpt4 key购买 nike

正如您在下面的注释代码中看到的那样,我试图在消息框内的文件夹中显示每个文件的名称和校验和。问题是这会为每个文件弹出一个单独的消息框,而不是将它们全部显示在一个窗口中。我意识到我需要将 MessageBox.Show() 行移到 foreach 循环之外,但它只显示最后一个文件而不是所有文件。

在一个消息框中显示所有文件的代码是什么?

// for each file in selected folder, print out its name and MD5 checksum value
foreach (string file in Directory.GetFiles(folderBrowserDialog1.SelectedPath))
{
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(file))
{
checksum = BitConverter.ToString(md5.ComputeHash(stream)).Replace("-", "").ToLower();
MessageBox.Show(file + ": " + checksum);
}
}
}

最佳答案

使用 StringBuilder然后在每次迭代期间将文件/校验和附加到 stringbuilder 对象,然后在 stringbuilder 对象上调用 MessageBox.Show(),例如:

StringBuilder s = new StringBuilder();
foreach (string file in Directory.GetFiles(folderBrowserDialog1.SelectedPath))
{
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(file))
{
checksum = BitConverter.ToString(md5.ComputeHash(stream)).Replace("-", "").ToLower();
s.AppendLine(file + ": " + checksum);
}
}
}
MessageBox.Show(s.ToString());

或者使用:

s.AppendFormat("{0}: {1}", file, checksum).AppendLine();

在循环内部避免为循环的每次迭代创建新字符串的开销 *credit goes to Destrictor*

关于c# - 如何在单个 MessageBox 中显示 foreach 循环的所有迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14710787/

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