Új hozzászólás Aktív témák

  • Peter Kiss

    őstag

    válasz drkbl #4475 üzenetére

    Egy rossz iterátorra ugrunk, de erre nem: :DDD

    private void SetViewBagSex (Sexes Sex)
    {
    IEnumerable<Sexes> values =
    Enum.GetValues(typeof(Sexes))
    .Cast<Sexes>();

    IEnumerable<SelectListItem> items =
    from value in values
    select new SelectListItem
    {
    Text = value.ToString(),
    Value = value.ToString(),
    Selected = value == Sex,
    };
    ViewBag.Sex = items;
    }

    1. kiszedjük az értékeket, lassú (első iteráció)
    2. visszapakoljuk az egészet enum-má, lassú (még egy iteráció)
    3. végig iterálunk a halmazon (úristen, de hát itt is egy iteráció, és még a SelectList-ből történő render-kor is lesz egy, te jó ég), hogy új objektumokat hozzunk létre, equality check elvileg gyors
    4. .ToString()-et nyomunk minden enum-on kétszer, ami reflection-t használ, és ez olyan lassú, hogy ha egy profiler meglátja, kettétörik a kijelződ
    5. dynamic típust használunk, amit később eleve cast-olnunk kell, nem épp a leggyorsabb megoldás

Új hozzászólás Aktív témák