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

lista tablica pętla

Cloud VPS
0 głosów
295 wizyt
pytanie zadane 6 listopada 2020 w C# przez kubaa322 Użytkownik (710 p.)

Witam, w jaki sposób mogę wyświetlić wszystkie elementy listy? Próbowałem w następujący sposób, ale nie działa. Jakieś pomysły?

List<object> list = new List<object>();

Task taskNumber = new Task(counter, taskName, userName);
 list.Add(taskNumber);

foreach(object i in list)
                        {
                            Console.WriteLine(i);
                        }

Jeszcze dodam że konsola zwraca:

ToDoList.Task (NazwaPliku.NazwaKlasy)

Z góry dzięki za wszystkie wskazówki

1 odpowiedź

0 głosów
odpowiedź 6 listopada 2020 przez tangarr Mędrzec (155,180 p.)
Musisz zaimplementować metodę toString() w swojej klasie https://docs.microsoft.com/pl-pl/dotnet/api/system.object.tostring?view=netcore-3.1
komentarz 6 listopada 2020 przez kubaa322 Użytkownik (710 p.)
powiem szczerze - ciężko mi się korzysta z tej dokumentacji, nie bardzo wiem jak to zaimplementować nawet po przeczytaniu;)
komentarz 6 listopada 2020 przez tangarr Mędrzec (155,180 p.)

Po prostu dodaj do swojej klasy metodę

public virtual string ToString ();

Ta funkcja jest używana przez Console.Write/WriteLine do wyświetlania obiektu.

np

class Kaczka{
    private string imie;
    public Kaczka(string imie) {
        this.imie = imie;
    }
    public override string ToString() {
        return "Kaczka "+imie;
    }
}

Kaczka kaczka1("Bob");
Kaczka kaczka2("Alicja");

Console.WriteLine(kaczka1);
Console.WriteLine(kaczka2);

 

komentarz 6 listopada 2020 przez Siemił Mądrala (7,380 p.)

1) Musisz nadpisać albo inaczej przeciążyć metodę ToString(), w twojej klasie Task. Wpisujesz:

public override string ToString()
{
    //To co chcesz aby klasa wyświetliła.
    //Np: wybrane przez ciebie pole.
    
    return $"Nazwa zadania: {taskName}";
} 

2) Mniej ładnym sposobem jest stworzenie własnej metody w klasie Task która będzie zwracać stringa którego chcesz wyświetlić:

//...
foreach(object i in list)
{
    //Np. twoja metoda pobierająca opis 
    //klasy mogłaby się nazywać GetDescription
    Console.WriteLine(i.GetDescription());
}
///...

3) Możesz z pól zrobić właściwości i wlocie sklejać żądany łańcuch:

//...
foreach(object i in list)
{
    Console.WriteLine($"{i.TaskName} : {i.TaskNumber} ...");
}
///...

 

Podobne pytania

–1 głos
1 odpowiedź 828 wizyt
pytanie zadane 24 października 2019 w C i C++ przez niezalogowany
+71 głosów
0 odpowiedzi 236,984 wizyt
0 głosów
3 odpowiedzi 693 wizyt

93,456 zapytań

142,452 odpowiedzi

322,721 komentarzy

62,837 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

Kursy INF.02 i INF.03
...