Struktura wypisuje nazwę projektu

0

Witam,
Stworzyłem kod posiadający dwie struktury (Osobę i Samochód). Samochody i osoby są sczytywane z pliku w którym są te dane podane, oddzielone średnikami, a następnie te dane są wklejane do listy jednokierunkowej. Przy próbie wyświetlenia tej listy dane o samochodach wyświetlają się dobrze, ale zamiast danych o osobach (imie i nazwisko) mam wypis : "moje4.Program+Osoba" moje4 - nazwa mojego projektu
Program - klasa w której mam wszystko
Osoba - nazwa struktury osoby
Nie wiem nawet jak szukać informacji o tym błędzie, bo nie wyświetla się to jako błąd, kod się normalnie wykonuje i nie wiem w czym tkwi problem. Wiem na pewno że problem następuje gdzieś w okolicy gdy nowo utworzoną osobę próbuję zaimplementować w strukturze samochodu jako jeden z parametrów.
Proszę o jakieś wskazówki, albo o informację o tym dlaczego wypisuje się coś takiego. Poniżej kod całego programu, z podkreśleniem gdzie zaczyna się błąd (moim zdaniem).

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

namespace moje4
{
    class Program
    {
        public struct Osoba
        {
            public string imie, nazwisko;
            public Osoba(string imie, string nazwisko)
            {
                this.imie = imie;
                this.nazwisko = nazwisko;
            }
            public string infoOsoba()
            {
                return imie + " " + nazwisko;
            }
        }
        public struct Samochod
        {
            
            public string marka;
            public string model;
            public int rocznik;
            Osoba wlasciciel;
            public Samochod(string marka, string model, int rocznik, Osoba wlasciciel)
            {
                this.marka = marka;
                this.model = model;
                this.rocznik = rocznik;
                this.wlasciciel = wlasciciel;
            }
            public string infoSamochod()
            {
                return marka + " " + model + " " + rocznik+" "+wlasciciel;
            }
        }
        public class Lista
        {
            public class Element
            {
                public Element następny;
                public Samochod Samochod;
            }
            public Element głowa;
            public Element ogon;
            
            public bool CzyPusta()
            {
                return głowa == null;
            }
            public void DodajElement(Samochod s)
            {
                Element e = new Element();
                e.Samochod = s;
                e.następny = głowa;
                głowa = e;
                if (ogon == null)
                {
                    ogon = e;
                }
            }
            public void Wyswietl()
            {
                if (CzyPusta())
                {
                    Console.WriteLine("Lista pusta");
                    return;
                }
                Element e = głowa;
                while(e!=null)
                {
                    Console.WriteLine(e.Samochod.infoSamochod());
                    e = e.następny;
                }
            }
        }
        static void DodawanieDoListyZPliku(string plik, Lista Lista)
        {
            StreamReader sr = new StreamReader(plik);
            while(!sr.EndOfStream)
            {
                string[] linijka = sr.ReadLine().Split(';');
**                Osoba wlasciciel = new Osoba(linijka[3],linijka[4]);
                Samochod s = new Samochod(linijka[0], linijka[1], Convert.ToInt32(linijka[2]), wlasciciel);**
                Lista.DodajElement(s);
            }
            sr.Close();
        }
        static void Main(string[] args)
        {
            string plik = @"C:\Users\Adam\Desktop\dane.txt";
            Lista Lista = new Lista();
            DodawanieDoListyZPliku(plik, Lista);
            Lista.Wyswietl();
            Console.ReadKey();  
        }
    }
}

0

Po pierwsze zamień struct na class i nigdy nie używaj struct.

Po drugie w linijce: return marka + " " + model + " " + rocznik+" "+wlasciciel; użyj wlasciciel.infoOsoba(). Chociaż lepiej, gdybyś zamienił infoOsoba i infoSamochod na public override string ToString().

0

Dziękuje, rzeczywiście zapomniałem że muszę tam wstawić funkcje zwracającą info o osobie od osoby.
A co do używania class zamiast struct, czemu nie używać struct ?

1

Bo struktur używa się w specyficznych warunkach i w określonym celu, a do tego muszą spełniać określone warunki, żeby to miało sens.

1 użytkowników online, w tym zalogowanych: 0, gości: 1