Oldukça yaygındır - özellikle kodunuzu daha fazla veriye dayalı hale getirmeye çalışırken, ilgili koleksiyonlar üzerinde yineleme yapmanız gerekir. Paralel diziler de tanımlanabilir ihtiyacım yokİlişkili değerler kümesinde yineleme için kullanılacak desen nedir?
items = [("DOC", "DocDate"), ("CON", "ConUserDate"), ("BAL", "BalDate")]
for (entType, dateField) in items:
# do stuff with the associated entType and dateField
: Ben gibi bir şey yazmak istiyorum, Python
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
}
: Mesela ben sadece bu gibi görünüyor kod parçası yazmayı bitirdim Dizilerimin aynı uzunlukta olduğunu iddia etmem gerekmiyor, öğeleri çıkarmak için bir dizin kullanmam gerekmiyor.
C# kullanarak bunu LINQ kullanarak yapmanın bir yolu gibi hissediyorum, ama ne olabileceğini anlayamıyorum. Birden çok ilişkili koleksiyonda yineleme yapmak için kolay bir yöntem var mı?
Düzenleme:
Bu biraz daha iyi, bence - en azından, durumda ben bildiriminde manuel koleksiyonlarını sıkıştırma lüksüne sahip nerede ve tüm koleksiyonları aynı nesneleri içerir nerede türü:
.NET 4.0'da bu kadar kod aşağıdaki gibi görünebilir, IEnumerable bir "Zip" uzantısı yöntemi ekliyoruzList<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
}
biri belirleyici bir yerine bir şey yazmak için "daha sıkıştırılmış ama daha az okunabilir" yol isteyeyim Neden yapı veya sınıf? – Hamid
30 veya 40 çift değeriniz varsa, aynı üye isimlerini 30 veya 40 kere yazmak zorunda kalmak kodu * daha * okunabilir yapmaz. –