Przypisanej dodanych wartosci do listy

Przypisanej dodanych wartosci do listy
BL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 95
0

Witam.

Mam klase Igredient :

Kopiuj

    internal class Igredient
    {
        private string youWannacalc;

        private string Name { get; set; }
        public List<Igredient> ListIgredient { get; set; } 


      
        public List<Igredient> AddIdredient()
        {
            var listIgredients = new List<Igredient>();
            do
            {
                Console.WriteLine("Add Name of Idgredient");
                string nameOfIdgredient = Console.ReadLine();

                listIgredients.Add(new Igredient() { Name = nameOfIdgredient });

                youWannacalc = StringOperation.ReadParameter("If you wanna add next idgredient enter YES");
            }
            while (youWannacalc == "YES");


          /   //Console.WriteLine("----------------------------------");
            //Console.WriteLine("It is a list available ingredients");
            //foreach (var item in listIgredients)
            //{
            //    Console.WriteLine($"{item.Name} ");
            //}

            return listIgredients;
        }

    }

I chcialbym w metodzie main uzyc metody AddAddIdredient ktora stworzy mi nowa liste i ta liste przypisze do mojego proporty czyli listy w klasie Igredient

W klasie main tworze taki zapis :

Kopiuj

var idredients = new Igredient();
idredients.AddIdredient();

Jednak to nie przypisuje mi wartosci do listy ktora utworzylem w klasie Idgredience.

Chcialbym pozniej odczytac liste skladnikow za pomoca metody ktora stworzylem(jak na razie pokazuje nulle) :

Kopiuj

ShowList(idredients.ListIgredient);

 public static void ShowList ( IEnumerable<object> giveList)
        {
            foreach (var item in giveList)
            {
                Console.WriteLine(item);
            }
        }

Prosze rowniez o wytlumaczenie jak to wszystko robic, dlaczego robie to zle i ewentualnie pozniej odeslac do literatury to sobie doczytam.

ZK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 273
0

Ta klasa jest za przeproszeniem do d. nie podobna. Naucz się podstaw programowania. Zęby bolą jak się na to patrzy.
Nie widzisz że to się wszystko zapętla ? Podziel to na dwie klasy albo podziel to składniki statyczne i na te które mają się znajdować w obiekcie

XardasLord
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gdańsk
  • Postów: 271
0

Dobrze, że próbujesz pisać po angielsku, ale popełniasz dużo błędów językowych:

Kopiuj
internal class Igredient

tutaj Igredient

Kopiuj
string nameOfIdgredient = Console.ReadLine();

tutaj idgredient
Niestety ale oba są błędne :)

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
1

@Zimny Krawiec: uspokoj sie
@XardasLord to powinno pojsc jako komentarz

masz nulle, bo AddIdredient zwraca nowa liste a ta ktora sprawdzasz czyli idredients.ListIgredient jest nullem bo nigdy nigdzie nie jest ustawiana

  1. inicjalizuj od razu nowa liste na zasadzie
Kopiuj
public List<Igredient> ListIgredient { get; set; }  = new List<Igredient>()
  1. w AddIdredient ma zwracac void. Dlaczego cos co dodaje, ma jeszcze cos zwracac?

  2. w AddIdredient zamiast tworzyc nowa liste, korzystaj z tej ktora jest w klasie czyli this.ListIgredient (this nie jest wymagane, ale chce Ci zobrazowac ze to nalezy do tej klasy)

co to jest StringOperation.ReadParameter ?

jezeli chodzi o literarure, to moze byc za wczesnie na to, ale zawsze warto polecic https://en.wikipedia.org/wiki/SOLID

BL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 95
0

@fasadin: Dziękuję za merytoryczne wyjaśnienie sprawy. Tak jak napisałeś, wcześniej doszedłem do tego, żeby od razu przy liście ją inicjalizować i później tylko przypisywać do niej wartości. Niby logiczne ale na początku drogi nie koniecznie :P.
Co do zwracania listy to rzeczywiście masz rację, że do końca to nie ma sensu. Oczywiście poprawie.
O Solidzie chętnie przeczytam bo temat mnie nie ominie.
StringOperator jest to moja klasa statyczna która ma metody które operują na stringach. W klasie tej jest metoda ReadParameter do sprawdzenia do podał użytkownik(TAK/NIE). Wywołuję ją w 2-3 miejscach w kodzie to postanowiłem wyrzucić to do osobnej metody.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.