• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Indekser zwaracający i-ty element w List<T>

Object Storage Arubacloud
0 głosów
307 wizyt
pytanie zadane 16 czerwca 2019 w C# przez DobryKurczak Bywalec (2,320 p.)

Witam. Chcę stworzyć indekser, który zwróci i-ty element mojej listy, która zawiera obiekty typu Object. Tutaj struktura mojej klasy Lista:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BibliotekaKlas
{
    public class Lista
    {
        private List<Pracownik> lista;
        public Lista()
        {
            lista = new List<Pracownik>();
        }

        public void ZapisConsole()
        {
            foreach(Pracownik p in lista)
            {
                p.ZapisConsole();
            }
        }

        public void OdczytConsole()
        {
            Pracownik pracownik = new Pracownik();
            pracownik.OdczytConsole();
            lista.Add(pracownik);
        }

        public int Rozmiar
        {
            get
            {
                return lista.Count;
            }
        }

        public Pracownik this[int i]
        {
            get
            {
                return lista[i];
            }
        }
    }
}

Zalezy mi na poprawnym zdefiniowaniu indeksera, ma on wyłącznie zwracać i-ty element listy. Nie mam pojęcia jak w tym wypadku to zrobić, no i jak wykorzystać tę właściwość(chcę wywołać w klasie Program.cs, która jest klasą główną).

Domyślam się, że

 return lista[i];

jest niepoprawne.

Klasy Pracownik nie wrzucam, ale jeśli będzie trzeba to wrzucę.

Z góry dziękuję za pomoc.

komentarz 16 czerwca 2019 przez NowyUrzydgownig Mądrala (5,090 p.)
Jest poprawnie.
komentarz 17 czerwca 2019 przez adrian17 Ekspert (344,860 p.)

Boczna uwaga: te dwa gettery można by napisać krócej

        public int Rozmiar => lista.Count;
        public Pracownik this[int i] => lista[i];
komentarz 17 czerwca 2019 przez DobryKurczak Bywalec (2,320 p.)

Zgadza się, wszystko jest poprawnie, tylko źle wywoływałem indekser i tu się pogubiłem.
Ale okazało się, że to nie jest nic skomplikowanego. Poprawne wywołanie:

Pracownik prac = lista1[0];
prac.ZapisConsole();

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
1 odpowiedź 319 wizyt
pytanie zadane 20 grudnia 2021 w C# przez mateusz45 Gaduła (3,240 p.)
0 głosów
1 odpowiedź 942 wizyt
pytanie zadane 11 stycznia 2020 w C# przez assassin Gaduła (3,260 p.)
0 głosów
0 odpowiedzi 162 wizyt

92,539 zapytań

141,382 odpowiedzi

319,481 komentarzy

61,928 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...