Kezdőoldal » Számítástechnika » Programozás » Hogy lehet kiiratni egy...

Hogy lehet kiiratni egy class-ban, majd metódusban lévő lista elemeit, egy másik metódusban?

Figyelt kérdés

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.'


2017. nov. 26. 20:35
 1/7 anonim ***** válasza:
Inkább másold be a kódot.
2017. nov. 26. 20:40
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:
Adattagok használatában, lokális változók helyett.
2017. nov. 26. 21:02
Hasznos számodra ez a válasz?
 3/7 A kérdező kommentje:

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);

}


}


}

2017. nov. 27. 08:35
 4/7 anonim ***** válasza:

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?

2017. nov. 27. 09:43
Hasznos számodra ez a válasz?
 5/7 A kérdező kommentje:

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.

2017. nov. 28. 15:13
 6/7 anonim ***** válasza:

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ó}";

}

}

2017. nov. 28. 18:43
Hasznos számodra ez a válasz?
 7/7 anonim ***** válasza:
*Azt mondjuk benne hagytam, hogy a listázás függvény a konzolra ír, normál esetben ilyet sohasem csinálunk...
2017. nov. 28. 18:50
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!