1. ホーム
  2. c#

[解決済み] c# リストの逆引きを試してみる

2023-02-03 08:42:06

質問

次のようなコードがあります。

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();
}

しかし、以下のようなエラーが発生します。

型 'void' を暗黙のうちに 'System.Collections.Generic.List<Lite.CategoryNavItem>'

なぜそうなるのか、何か思い当たることはありますか?

どのように解決するのですか?

試してみてください。

NavItems.Reverse();
return NavItems;

List<T>.Reverse() インプレース の逆で、新しいリストを返すわけではありません。

これは とは対照的で、LINQでは Reverse() が返す は反転した配列を返しますが、適切な非拡張メソッドがある場合、それは は常に 拡張メソッドよりも優先して選択されます。さらに、LINQの場合、そうでなければならないだろう。

return someSequence.Reverse().ToList();