나는 상호 언어가 딸꾹질하고 있습니다. C#에서이 목록처럼 큰 컬렉션을 그리고 과 내가 가진 :C#에서 참조 컬렉션을 만들 수있는 방법
의 특성을 가진지도 클래스 :
List
<byte[]>
이미지;
목록 <Tile>
타일;
의 타일 등급 :
byte[] ImageData;
int X;
int Y;
지금 내가지도 클래스에 이미지를 추가 할과 타일 클래스에 "참조"그것의 imageData의 속성을 가지고있다. 나는 이미지 [0]을 할당 할 수 없다는 것을 발견했다. 목록의 개체에 대한 참조를 가질 수 없습니다.
제 수정은 사전을 작성하는 것입니다. 이게 최선의 방법인가요? 아니면 어떻게 든 객체 컬렉션에 "포인터"를 가질 수 있습니까? 의견에 대 한 응답에서
- 내가 imageData의이 목록의 첫 번째 바이트 배열을 가리키는 후 나는이 목록에 해당 이미지를 변경하고 타일의 이미지를 잡아 한 타일의 무리가 있고 그들은 이전의 경우 이미지 지정자. 따라서 타일을 할당하여 목록의 첫 번째 이미지를 만든 다음 이미지를 변경하십시오. 이제 타일 이미지가 새로운 이미지를 참조 할 것으로 기대됩니다. 그들은하지 않습니다.
최종 개정 - gladford3x의 코드를 살펴보십시오 (아직 서식을 마스터하지 못했습니다). Main의 마지막 줄은
입니다. myMap.Images [0] = image2; 전화 할 때
잘 myMap.Tiles [0]는 내가지도 클래스 내에서 명명 된 컬렉션을 사용
을 갈 수있는 올바른 방법이라고 생각 첫 번째 바이트의 배열
나는 그것이 당신이 원하는 것을 따라 가지 않습니다. List에 Tile 객체를 추가하면 Tile이 참조 유형이기 때문에 참조 목록을 갖게됩니다. 당신이하고 싶은 것에 대한 코드 예제를 줄 수 있습니까? – galford13x
당신이 여기서 무엇을하려고하는지 잘 모르겠습니다. 'Images [0]'은 완전히 작동해야합니다. 게다가, "객체 컬렉션에 대한 포인터"부분은 다소 혼란 스럽습니다 :'this.Images' *는 실질적으로 그러한 포인터입니다. – Jon
Images [0]에 저장된 이미지를 바꾸고 그 이미지를 사용하는 타일이 변경 사항을 반영하는 것에 대해 이야기하고 있습니까? 이 경우 이미지 데이터가 아닌 색인을 전달하고 실제 이미지를 가져와야 할 때 Map을 사용할 수 있습니다. 나는. ImageData를 저장하는 대신 ImageIndex를 저장하십시오. –