2014-01-08 5 views
2

일반 목록의 스왑 루틴을 공변 적으로 작성할 수 있습니까? 스왑이 버전의 공변하지 않기 때문에 Swap(new List<int>{1,2}, 0, 1) 여기에 작동하지 않습니다 호출목록의 두 요소를 공변으로 교환하는 경우

public static void Swap(List<IComparable> list, int pos1, int pos2) 
{ 
    IComparable temp = list[pos1]; 
    list[pos1] = list[pos2]; 
    list[pos2] = temp; 
} 

: 여기에 작동하지 않습니다 스왑 루틴입니다.

+5

일부 샘플 코드, 의사 코드를 추가하면 어떤 내용인지 쉽게 이해할 수 있습니다. –

+0

텍스트 벽 및 코드 없음. 나는 그 모든 것을 읽기에는 너무 게으른 편이다. –

+3

@HighCore 모든 프로그래밍 문제가 코드에 관한 것은 아닙니다. 그것에 익숙해. – poke

답변

1

이 기능이 작동합니까?

public static void Swap<T>(this List<T> list, int pos1, int pos2) 
{ 
    T tmp = list[pos1]; 
    list[pos1] = list[pos2]; 
    list[pos2] = tmp; 

} 

이렇게하면 유형을 지정하고 스왑을 가능하게합니다.

+0

위대한 답변, jsobo. 그 말을 알아 채지 못하게하는 벙어리. 이 다음 번에 더 잘 준비 될 것입니다! 다시 한 번 감사드립니다! –

관련 문제