Что такое объявление функции цикла?
И еще немного информации?
Вот пример из Microsoft Docs.
using System;
using System.Threading;
public class Work
{
public static void Main()
{
// Start a thread that calls a parameterized static method.
Thread newThread = new Thread(Work.DoWork);
newThread.Start(42);
// Start a thread that calls a parameterized instance method.
Work w = new Work();
newThread = new Thread(w.DoMoreWork);
newThread.Start("The answer.");
}
public static void DoWork(object data)
{
Console.WriteLine("Static thread procedure. Data='{0}'",
data);
}
public void DoMoreWork(object data)
{
Console.WriteLine("Instance thread procedure. Data='{0}'",
data);
}
}
// This example displays output like the following:
// Static thread procedure. Data='42'
// Instance thread procedure. Data='The answer.'
ссылка: https://msdn.microsoft.com/en-us/library/1h2f2459 (v = vs.110)
В.NET 4.0 они добавляют метод расширения "Zip" к IEnumerable, таким образом, Ваш код мог посмотреть что-то как:
foreach (var item in entTypes.Zip(dateFields,
(entType, dateField) => new { entType, dateField }))
{
// do stuff with item.entType and item.dateField
}
На данный момент я думаю, что самая легкая вещь сделать оставить его как для цикла. Существуют приемы, посредством чего можно сослаться на "другой" массив (при помощи перегрузки Выбора (), который обеспечивает индекс, например), но ни один из них не так чист как простое для итератора.
Вот сообщение в блоге о Zip, а также способе реализовать его самостоятельно. Должен получить Вас идущий тем временем.
Создать структуру?
struct Item
{
string entityType;
string dateField;
}
В значительной степени то же как Ваше решение Pythonic, кроме безопасного с точки зрения типов.
Можно использовать пару и универсальный Список.
List<Pair> list = new List<Pair>();
list.Add(new Pair("DOC", "DocDate"));
list.Add(new Pair("CON", "ConUserDate"));
list.Add(new Pair("BAL", "BalDate"));
foreach (var item in list)
{
string entType = item.First as string;
string dateField = item.Second as string;
// DO STUFF
}
Пара является частью сети. UI, но можно легко создать собственный класс или структуру.
Если Вы просто хотите объявить встроенные списки, можно сделать это за один шаг:
var entities = new Dictionary<string, string>() {
{ "DOC", "DocDate" },
{ "CON", "ConUserDate" },
{ "BAL", "BalDate" },
};
foreach (var kvp in entities) {
// do stuff with kvp.Key and kvp.Value
}
Если они происходят из других вещей, у нас есть набор дополнительных методов для создавания словарей от различных структур данных.
Это - действительно вариация на другие темы, но это добилось бы цели также...
var items = new[]
{
new { entType = "DOC", dataField = "DocDate" },
new { entType = "CON", dataField = "ConUserData" },
new { entType = "BAL", dataField = "BalDate" }
};
foreach (var item in items)
{
// do stuff with your items
Console.WriteLine("entType: {0}, dataField {1}", item.entType, item.dataField);
}