gpt4 book ai didi

c# - 执行相同循环以填充两个不同集合的更好方法 c#

转载 作者:行者123 更新时间:2023-11-30 17:35:11 25 4
gpt4 key购买 nike

目前我有两个不同的列表,需要对每个列表执行相同的操作。

有没有比我目前的方法更好的方法:

foreach (FileMatch fileName in lstChanged.Items)
{
List<Symbol> fileOneSymbols = new List<Symbol>();
List<Symbol> fileTwoSymbols = new List<Symbol>();
foreach (List<Symbol> list in new[] { fileOneSymbols, fileTwoSymbols })
{
string[] lines = File.ReadAllLines(list == fileOneSymbols ? _folderOne : _folderTwo + fileName.FilePath);
for (int i = 0; i < lines.Length; i++)
{
string line = lines[i];
if (line.Contains("inst"))
{
list.Add(new Symbol(line, lines[i + 1], i + 1));
}
}
}
//Further Processing to go here
}

这不是一个关键问题,我只是不喜欢将相同的(大概)代码写两次,我知道我可以将它作为一个函数提取出来并调用它两次,但我只是想知道是否有更好的,这样做的代码味道更少。

最佳答案

你应该提取一个单独的方法:

private IEnumerable<Symbol> _getSymbolsFromFile(string fileName)
{
string[] lines = File.ReadAllLines(fileName);
for (int i = 0; i < lines.Length; i++)
{
string line = lines[i];
if (line.Contains("inst"))
yield return new Symbol(line, lines[i + 1], i + 1);
}
}

然后像这样在你的循环中调用它:

List<Symbol> fileOneSymbols = _getSymbolsFromFile(_folderOne + fileName.FilePath).ToList();
List<Symbol> fileTwoSymbols = _getSymbolsFromFile(_folderTwo + fileName.FilePath).ToList();

关于c# - 执行相同循环以填充两个不同集合的更好方法 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41465688/

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