지금까지 항상이 사이트의 기존 게시물에서 답변을 얻을 수 있었지만 오늘은 누구도 질문하기 전에 아무도 묻지 않습니다. 코드의 후속 작품에 대한일반 클래스의 배열 및 인덱서
그것 :
class Board<T>
{
private T[,] board;
public T[,] BoardArray
{
get { return (T[,])board.Clone(); }
}
public T this[int y, int x]
{
get { return board[y, x]; }
set { board[y, x] = value; }
}
public Board()
{
board = new T[8, 8];
}
public void AssignToBoard()
{
board[1, 2] = 3;
this[1, 2] = 3;
}
}
문제는 방법의 코드 두 줄이 동일한 컴파일시 오류가 발생한다는 것입니다. 오류가 발생하는 이유는 알지만 깨끗한 해결 방법을 모릅니다. 그것은 여전히 더러운 솔루션입니다
board[1, 2] = (T)(object)3;
this[1, 2] = (T)(object)3;
가 작동하지만 :
이Error 1 Cannot implicitly convert type 'int' to 'T' C:\Users\Peter\Desktop\Dropbox\ReversieAI\ReversieAI\ReversieAI\Map.cs 31 18 ReversieAI
내 코드는 컴파일 얻을 내가 할 수 있었던 유일한 방법은에 라인을 변경하는 것입니다 : 이 오류입니다 . 여러분 중 누구라도 문제를 인식하고 어떤 생각을 나눌 수 있도록 도와 줄 수 있습니까? 사전에
감사합니다, 피터
편집 : 나는 클래스의 일반적인 부분을 제거 내 아키텍처에 뭔가를 변경하여 해결책을 발견했다. 모든 의견을 보내 주셔서 감사합니다. 정말 감사.
알고 계시 겠지만, 귀하의 보드는 일반적인 유형으로 만드는 이유보다 int [,] 유형이 될 것입니다. –
사이드 노트 : BoardArray 속성은 속성에 특별한 성능 특성을 가지고 있습니다 - 큰 데이터 청크를 만듭니다. "간단한 속성을 호출하고 지금 내 프로그램이 크롤링"하는 것을 피하기 위해 함수로 변경하는 것이 좋습니다. –
@AlexeiLevenkov 귀하의 요지를 이해하지만 복사본을 반환하지 않으면 리턴 된 배열에 대한 변경 사항도 필드 자체에 반영되며 이는 피하고자하는 것입니다. – Jupiter