특히 코드를 데이터 중심으로 만들려고 할 때와 같이 관련 컬렉션을 반복해야 할 때가 많습니다. 병렬 배열을 선언하는 내가 필요하지 않은연관된 값 집합을 반복하는 데 사용할 패턴은 무엇입니까?
items = [("DOC", "DocDate"), ("CON", "ConUserDate"), ("BAL", "BalDate")]
for (entType, dateField) in items:
# do stuff with the associated entType and dateField
: 내가 좋아하는 뭔가를 쓰는 것, 파이썬에서
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
}
: 예를 들어, 난 그냥 같이 보입니다 코드의 조각을 작성 완료 내 배열의 길이가 같다고 주장 할 필요가 없습니다. 색인을 사용하여 항목을 가져올 필요가 없습니다.
LINQ를 사용하여 C#에서이 작업을 수행 할 수있는 방법이 있지만 사용하지 못할 수도 있습니다. 여러 개의 연관된 컬렉션을 반복하는 몇 가지 쉬운 방법이 있습니까?
편집 :
이 조금 더, 내가 생각 - 적어도, 경우에 내가 선언에 수동으로 컬렉션을 압축하는 사치를 가질 경우, 모든 컬렉션은 동일의 객체를 포함 할 경우 유형 :
.NET 4.0에서 그들이 그렇게 코드가 같은 것을 볼 수 있었다,를 IEnumerable "우편 번호"확장 메서드를 추가하는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
}
하나는 정의 대신에 뭔가를 작성하는 "더 압축 미만 읽을 수있는"방법을 원하는 것이 왜 구조체 또는 클래스? – Hamid
30 개 또는 40 쌍의 값이있는 경우 동일한 멤버 이름을 30 번 또는 40 번 쓰지 않아도 코드 *를 더 읽을 수 없습니다. –