Hogy lehet kiiratni egy class-ban, majd metódusban lévő lista elemeit, egy másik metódusban?
Tehát van egy class-om, van 2 metódusom.
Az egyikben bekérek valamit a listába, a másikban ki akarom iratni, természetesen mindenhol példányosítottam hibaüzenet:
System.NullReferenceException: 'Az objektumhivatkozás nincs beállítva semmilyen objektumpéldányra.'
class osztaly
{
public List<int> azonosito;
public void Felvetel()
{
Ugyfel u = new Ugyfel();
u.azonosito = new List<int>();
Console.WriteLine("azon:");
int add = Convert.ToInt32(Console.ReadLine());
u.azonosito.Add(add);
}
public void Listazas()
{
Ugyfel u = new Ugyfel();
foreach (int item in u.azonosito) // itt bukik el a program
{
Console.WriteLine(item);
}
}
}
Na, elég nagy a káosz élettartam, láthatóság, lokális változó, osztályszintű adattag témakörben, azt látom.
Ha a Listazas() függvényben létrehozol egy új, lokális ügyfél objektumot az teljesen üres lesz, semmi köze nem lesz a Felvetel() függvényben létrehozott ügyfélhez, hiszen az is csak egy lokális változó, tehát a függvény végén megszűnt létezni (legalábbis hivatkozni nem tudsz már rá).
(Bájdövéj, vagy hasznolj angol elnevezéseket, vagy használj ékezeteket a magyar nevekhez, mert ez így kb a legrosszabb kombináció (inkább angol legyen, később úgyis az fog kelleni.)
Az már megint más hiba, hogy egy új ügyfél objektumnak miért null a listája?
Ezt inicializálni az Ugyfel osztály feladata lenne, nem a használóé.
Harmadrészt mi az, hogy azonosító lista?
Mit jelent ha több elem van benne?
Harmadrészt az osztályban is azonosító listár van, meg egy ügyfélben is, akiből meg több lehet gondolom.
Hogy találkoznak itt a különböző dimenziók?
Nem ügyfeleket szeretnél eltárolni az osztályban azonosítók helyett?
Köszönöm a válaszodat. Megpróbálok én is válaszolni a feltett kérdéseidre.
Ez egy ügyfél, ügyfélazonosítót bekérő program. Aminek tárolnia kéne egyszerre több ügyfélnevet, illetve azonosítót.
Azért null az ugyfel lista, mert azt a felhasználónak kell feltöltenie.
Azonosítóba egy int számértéket szeretnék bekérni.
Ez a kérdésem, hogy hogy lehetne ezeket összehangolni?
Remélem így egy kicsit már tisztább a kép.
Nekem eddig is tiszta volt, te vagy gondban, hogy mit is szeretnél csinálni. :)
Szerintem valami ilyesmit szerettél volna (helyreraktam a csillió megsértett OOP elvet is):
using System;
using System.Collections.Generic;
public class Osztály
{
private readonly List<Ügyfél> ügyfelek = new List<Ügyfél>();
public void Felvétel(int azonosító)
{
this.ügyfelek.Add(new Ügyfél(azonosító));
}
public void Listázás()
{
foreach (var ügyfél in this.ügyfelek)
{
Console.WriteLine(ügyfél);
}
}
}
public class Ügyfél
{
public int Azonosító { get; }
public Ügyfél(int azonosító)
{
Azonosító = azonosító;
}
public override string ToString()
{
return $"{nameof(Azonosító)}: {Azonosító}";
}
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!