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;