c # 목록을 뒤집으려고
public class CategoryNavItem
{
public int ID { get; set; }
public string Name { get; set; }
public string Icon { get; set; }
public CategoryNavItem(int CatID, string CatName, string CatIcon)
{
ID = CatID;
Name = CatName;
Icon = CatIcon;
}
}
public static List<Lite.CategoryNavItem> getMenuNav(int CatID)
{
List<Lite.CategoryNavItem> NavItems = new List<Lite.CategoryNavItem>();
-- Snipped code --
return NavItems.Reverse();
}
그 반대는 작동하지 않습니다.
Error 3 Cannot implicitly convert type 'void' to 'System.Collections.Generic.List<Lite.CategoryNavItem>'
이것이 왜 그런지 아이디어가 있습니까?
시험:
NavItems.Reverse();
return NavItems;
List<T>.Reverse()
이다 제자리 반대; 새 목록을 반환하지 않습니다.
이것은 수행 LINQ 대조적를 Reverse()
리턴 반전 된 순서이지만 적당한 비 확장 방법이있을 때 그것을되어 항상 확장 방법에 우선하여 선택. 또한 LINQ의 경우 다음과 같아야합니다.
return someSequence.Reverse().ToList();
한 가지 해결 방법은 다음과 같습니다. Return NavItems.AsEnumerable().Reverse();
.Reverse()
on a list는 목록 내의 항목을 반전하지만 새 반전 된 목록을 반환하지 않습니다.
Reverse()
반전 된 목록 자체를 반환하지 않고 원래 목록을 수정합니다. 따라서 다음과 같이 다시 작성하십시오.
return NavItems.Reverse();
에
NavItems.Reverse();
return NavItems;
Reverse()
함수의 예상대로 목록을 반환하지 않습니다.
NavItems.Reverse();
return NavItems;
.Reverse
"in-place"를 뒤집습니다 ..., 시도
NavItems.Reverse();
return NavItems;
예와 같은 목록이있는 경우 :
List<Lite.CategoryNavItem> NavItems
일반 Reverse <> 확장 메서드를 사용하여 원본을 수정하지 않고 새 목록을 반환 할 수 있습니다. 다음과 같은 확장 방법을 사용하십시오.
List<Lite.CategoryNavItem> reversed = NavItems.Reverse<Lite.CategoryNavItem>();
참고 : 확장 메서드를 명시 적으로 사용하려면 <> 일반 태그를 지정해야합니다. 잊지 마세요
using System.Linq;
참고 URL : https://stackoverflow.com/questions/6980608/c-sharp-trying-to-reverse-a-list
'programing tip' 카테고리의 다른 글
Google Maps v3 fitBounds () 단일 마커에 대해 너무 가깝게 확대 (0) | 2020.09.23 |
---|---|
y 축을 백분율로 서식 지정 (0) | 2020.09.23 |
두 시간의 차이를 초 단위로 확인 (0) | 2020.09.23 |
객체가 이미 목록에 있는지 확인하는 방법 (0) | 2020.09.23 |
jQuery를 사용하여 JavaScript 객체에서 항목 추가 / 제거 (0) | 2020.09.23 |