这是很常见的 - 特别是当你试图让你的代码变得更加数据驱动时 - 需要迭代关联的集合。例如,我刚写完一段代码,如下所示:
string[] entTypes = {"DOC", "CON", "BAL"};
string[] dateFields = {"DocDate", "ConUserDate", "BalDate"};
Debug.Assert(entTypes.Length == dateFields.Length);
for (int i=0; i<entTypes.Length; i++)
{
string entType = entTypes[i];
string dateField = dateFields[i];
// do stuff with the associated entType and dateField
}
在 Python 中,我会写如下内容:
items = [("DOC", "DocDate"), ("CON", "ConUserDate"), ("BAL", "BalDate")]
for (entType, dateField) in items:
# do stuff with the associated entType and dateField
我不需要声明并行数组,不需要断言我的数组长度相同,不需要使用索引来取出项目。
我觉得在 C# 中使用 LINQ 可以做到这一点,但我不知道它可能是什么。是否有一些简单的方法可以遍历多个关联的集合?
编辑:
我认为这会更好一些 - 至少在我可以在声明时手动压缩集合并且所有集合都包含相同类型的对象的情况下:
List<string[]> items = new List<string[]>
{
new [] {"DOC", "DocDate"},
new [] {"CON", "ConUserDate"},
new [] {"SCH", "SchDate"}
};
foreach (string[] item in items)
{
Debug.Assert(item.Length == 2);
string entType = item[0];
string dateField = item[1];
// do stuff with the associated entType and dateField
}