Witam.
Mam do zrobienia na jeden z przedmiotów prostą aplikacje konsolową i obecnie przerabiamy typy generyczne - list<T>
Co nie działa? W konsoli odpalam program i normalnie prosi mnie o to co mam tam wpisać, ja wpisuje a potem ma mi wyświetlić, i tu jest problem. Na początek zaprezentuję kod:
klasa 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 Dodaj(Pracownik pracownik)
{
lista.Add(pracownik.Clone());
}
public void ZapisConsole()
{
Pracownik pracownik = new Pracownik();
pracownik.ZapisConsole();
}
public void OdczytConsole()
{
Pracownik pracownik = new Pracownik();
pracownik.OdczytConsole();
lista.Add(pracownik);
}
}
}
klasa Program (klasa główna)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BibliotekaKlas;
namespace WierszPolecen
{
class Program
{
static void Main(string[] args)
{
Lista lista1 = new Lista();
lista1.OdczytConsole();
lista1.ZapisConsole();
}
}
}
A tu część klasy Pracownik, dla wglądu jak wygląda metoda ZapisConsole
public virtual string FormatWyjsciowy()
{
return "imię nazwisko:" + Imie + " " + Nazwisko + "\n Data urodzenia: " + dataUrodzenia.Dzien + " " + dataUrodzenia.Miesiac + " " + dataUrodzenia.Rok + "\n Adres zamieszkania: " + " " + adresZamieszkania.Ulica + " " + adresZamieszkania.NumerDomu + " " + adresZamieszkania.Miasto;
}
public virtual void OdczytConsole()
{
Console.Write("Podaj imie pracownika: ");
imie = Console.ReadLine();
Console.Write("Podaj nazwisko pracownika: ");
nazwisko = Console.ReadLine();
Console.Write("Podaj dzien urodzenia pracownika: ");
dataUrodzenia.Dzien = int.Parse(Console.ReadLine());
Console.Write("Podaj miesiac urodzenia pracownika: ");
dataUrodzenia.Miesiac = Console.ReadLine();
Console.Write("Podaj rok urodzenia pracownika: ");
dataUrodzenia.Rok = int.Parse(Console.ReadLine());
Console.Write("Podaj adres zamieszkania pracownika \n ");
Console.Write("Ulica ");
adresZamieszkania.Ulica = Console.ReadLine();
Console.Write("Numer domu ");
adresZamieszkania.NumerDomu = Console.ReadLine();
Console.Write("Miasto ");
adresZamieszkania.Miasto = Console.ReadLine();
}
public virtual void ZapisConsole()
{
Console.WriteLine(FormatWyjsciowy());
}
A co jak wygląda to w konsoli:
Podaj imie pracownika: jan
Podaj nazwisko pracownika: nowak
Podaj dzien urodzenia pracownika: 12
Podaj miesiac urodzenia pracownika: maj
Podaj rok urodzenia pracownika: 1989
Podaj adres zamieszkania pracownika
Ulica kopernika
Numer domu 12A
Miasto Krakow
imię nazwisko:
Data urodzenia: 0 0
Adres zamieszkania:
Press any key to continue . . .
Próbowałem też w klasie Lista metodę ZapisConsole zrobić tak:
public void ZapisConsole()
{
foreach (Pracownik p in lista)
{
Console.WriteLine(p);
}
}
ale tu tym bardziej nic nie działa. Mógłby ktoś pomóc, co tu poprawić. Z góry dziękuję za pomoc!