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();
}
Das Gegenteil funktioniert nicht:
Error 3 Cannot implicitly convert type 'void' to 'System.Collections.Generic.List<Lite.CategoryNavItem>'
Irgendwelche Ideen, warum das sein könnte?
Versuchen:
NavItems.Reverse();
return NavItems;
List<T>.Reverse()
ist ein in-place reverse; Es wird keine neue Liste zurückgegeben.
Dies bewirkt im Gegensatz zu LINQ, wo Reverse()
die umgekehrte Reihenfolge zurückgibt , aber wenn es ein geeignetes non gibt -Erweiterungsmethode Es wird immer anstelle einer Erweiterungsmethode ausgewählt. Im LINQ-Fall müsste es außerdem sein:
return someSequence.Reverse().ToList();
Eine Problemumgehung wäre Return NavItems.AsEnumerable().Reverse();
.Reverse()
in einer Liste kehrt die Elemente in der Liste um. Es wird keine neue umgekehrte Liste zurückgegeben.
Reverse()
gibt keine umgekehrte Liste selbst zurück, sondern ändert die ursprüngliche Liste. Also schreibe es wie folgt um:
return NavItems.Reverse();
ZU
NavItems.Reverse();
return NavItems;
Reverse()
gibt keine Liste zurück, wie von Ihrer Funktion erwartet.
NavItems.Reverse();
return NavItems;
.Reverse
kehrt das "In-Place" um ..., versuchen Sie es
NavItems.Reverse();
return NavItems;
Wenn Sie eine Liste wie in Ihrem Beispiel haben:
List<Lite.CategoryNavItem> NavItems
Mit der generischen Reverse <> -Erweiterungsmethode können Sie eine neue Liste zurückgeben, ohne die ursprüngliche zu ändern. Verwenden Sie einfach die folgende Erweiterungsmethode:
List<Lite.CategoryNavItem> reversed = NavItems.Reverse<Lite.CategoryNavItem>();
Anmerkungen: Sie müssen die <> generischen Tags angeben, um die Erweiterungsmethode explizit zu verwenden. Vergiss das nicht
using System.Linq;