2010-07-24 2 views
4

목록 목록을 작성해야하지만 전체 아이디어가 너무 아름답 지 않습니다. 그냥 귀찮은 것 같습니다. 목록의 목록을 보유하는 다른 패턴이 있습니다.목록 목록에 냄새가 좋지 않습니까? 내 다른 옵션은 무엇입니까

내 첫 번째지만 Arraylist의 arrayList를 사용하는 것입니다.

C#을, .NET-2

더 : 항목의 다음 수를 저장할 수는 작지만 항상 변화이다.

참고 : 은이 질문에 ArrayLists의 사용에 수정되었습니다 List<List<T>> 아무 문제가 없습니다

What's wrong with using an ArrayList in .net-2.0

+0

절대 사용자 ArrayList. – tster

+2

나는 전에 그 주석을 보았다. arraylist의 무엇이 문제입니까? – fishhead

+0

안전 장치가 없습니다. – recursive

답변

6

- LINQ의 SelectMany 그 상황에서 당신의 친구가 될 수 있습니다.

+1

주석이 유효하고 +1을 얻는 동안 LINQ는 3.5 이상에서만 사용할 수 있지만 OP는 2.0을 표시합니다. –

+0

그는 .Net 2.0이라고 말합니다. – DOK

+0

LinqBridge (또는 이와 유사한) .Net 2.0에서 Linq 개체를 사용할 수 있습니다 – DaveShaw

1

전혀 문제가 없습니다. 나는 이미 그것을 사용했고 그것은 내가 필요한 시간에 적합했다. 패턴은 목록의 목록입니다. :)

1

목록 자체가 악취가 아닙니다. 목록의 크기가 모두 같으면 2D 배열을 사용하는 것이 좋습니다. int[2,2]이지만 목록의 길이가 다른 경우 목록의 목록은 올바른 방법입니다. 비정형 2D 배열에 대한 클래스를 공식적으로 코딩하는 것보다 짧습니다.

+0

C#에서 직접 들쭉날쭉 한 배열을 사용할 수도 있습니다 - "비정형 2D 배열에 대한 클래스를 공식적으로 코딩"할 필요가 없음 - C#에서 지그재그 배열이 이미 지원됨 . –

2

맞춤 클래스에서 생성 된 개체는 어떻게 사용합니까?

예를 들어 고객은 여러 개의 주소를 가질 수 있습니다. Address 속성이있는 Customer 개체를 만듭니다. 그런 다음 고객의 컬렉션 (배열, ArrayList 등)을 가질 수 있으며 각 고객은 주소의 컬렉션을 가질 수 있습니다.

이것은 제품 범주의 제품, 부서의 직원 등 많은 종류의 정보에 적합합니다.

이렇게하면 계층 적 관계를 이렇게 쉽게 처리 할 수 ​​있습니다.

2

잘 정의 된 공용 메소드를 사용하여 클래스에 래핑하는 것이 좋습니다.

1

확실히 제네릭 목록이나 비 제네릭 변형 인 ArrayList를 사용할 수 있습니다.

List<List<string>> listOfLists = new List<List<string>>(); 
listOfLists.Add(new List<string>()); 
listOfLists.Add(new List<string>()); 

ArrayList stringListOfStringLists = new ArrayList(); 
stringListOfStringLists.Add(new ArrayList()); 
stringListOfStringLists.Add(new ArrayList()); 
+1

-1은 ArrayList가 옵션임을 언급합니다. 엄지 손가락의 규칙, 절대 ArrayList를 사용하지 마십시오. – tster

+3

왜 안 되니? ArrayList의 문제점은 무엇입니까? –

+1

@ John Kugelman - 유형 안전성, 복싱 및 복싱 해제 비용 즉, 성능이 –

관련 문제