2012-07-08 23 views
3

Hotspot이라는 새 클래스 형식을 정의했습니다. 나는 핫스팟 (나는 List를 사용했다.)과 세번째 사이의 동적 배열을 필요로했다. 여기 내 코드 :사용자 정의 형식 배열 배열

List<Hotspot> items = new List<Hotspot>(); 
List<Hotspot> locations = new List<Hotspot>(); 

Hotspot[][] arrays = new Hotspot[][]{items, locations}; 

그러나 arrays이 작동하지 않습니다. 그냥 배열이 items/locations에 쉽게 접근 할 수 있도록 필요합니다.

는 F에서 # 나는이 방법으로 그것을했다 :

let mutable items = new ResizeArray<Hotspot>() 
let mutable locations = new ResizeArray<Hotspot>() 

let arrays = [|items; locations|] 

그러나 나는 C#에서 같은 일을 할 수 없습니다. 도움?

+2

List 이 핫스팟과 같지 않으므로 작동하지 않습니다. 즉, 배열을 핫스팟의 2 차원 배열로 선언하지만 두 개의 List로 채우도록하십시오. 정적 타이핑에서는 그럴 수 없습니다. –

답변

4
List<Hotspot>[] arrays = new List<Hotspot>[]{items, locations}; 
3

itemslocations는리스트로 선언 (인스턴스화)하고 있습니다. 목록은 배열이 아니며 배열로 할당하려고합니다. 그것들을 배열로 변환하거나 대신 목록을 사용하지 마십시오.

Hotspot[][] arrays = new Hotspot[][]{ items.ToArray(), locations.ToArray() }; 
//or 
List<Hotspot>[] lists = new[] { items, locations }; 

추신은 F # ResizeArray<T>는 기본적으로 .NET List<T>에 대한 별칭입니다. 따라서 위의 예에서 F # 예제의 arrays 변수는 lists과 같으며 목록 배열을 만들었습니다.

+0

후자는 제 의견으로는 훨씬 깨끗합니다. –

+0

그것은 작동하지 않으며 두 번째 시도도합니다. –

+0

왜 "배열"선언의 위치에 문제가 있는지 알 수 없습니다. Form_Load() 내에서 완료되면 작동합니다. 나에게 의미가 없다 ... –

관련 문제