Wypisywanie z listy

0

Witam muszę napisać stos obiektowo. na razie dopiero zacząłem i mam problem z wypisywaniem. Dopiero zaczynam bawić się w c# więc proszę o wyrozumiałość.

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

namespace Stos
{
    class Program
    {
        static void Main(string[] args)
        {
            sstack s1 = new sstack();
            s1.init(2);
            foreach (var i in s1)
            {

            }
        }
    }

    public class sstack
    {
       public List<pole> lista_stack = new List<pole>();

        public void init(int a)
        {
            string pom;
            int pom2;

            for(int i=0; i < a; i++)
            {
                Console.WriteLine("Podaj liczbe!");
                pom = Console.ReadLine();
                pom2 = int.Parse(pom);
                var dane = new pole { liczba = pom2};
                lista_stack.Add(dane);
            }
        }

    }

    public class pole
    {
        public int liczba;
    }
}

pojawia się błąd w linijce ```
foreach (var i in s1)


Błąd CS1579 Instrukcja foreach nie może operować na zmiennych typu „sstack”, ponieważ „sstack” nie zawiera definicji publicznej elementu „GetEnumerator” Stos C:\Users\Kamil\source\repos\Stos\Stos\Program.cs 15 Aktywne

0

Twoja własna klasa sstack nie pozwala na robienie na niej foreach, bo jej tak nie zaprogramowałeś.

Możesz albo odwołać się do s1.lista_stack i na nim zrobić foreach, ale raczej nie powinieneś udostępniać takiej cechy "na zewnątrz" obiektu (lista_stack powinna być private), albo zaimplementować w twojej klasie IEnumerable albo zrobić sobie metodę w twoim stosie która będzie wyświetlała stos i uruchamiać ją "z zewnątrz".

W zasadzie takich rzeczy jak Console.WriteLine() albo Console.ReadLine() nie powinno być w implementacji stosu jako takiego.

0

Musisz miec nadpisane getEnumerator, zeby foreach obslugiwalo type.

0

a jak zaiimplementować IEnumerable?
może to banalne, ale naprawdę jestem newbie :)

0

[ed] napisałem o tworzyłem temat zanim napisałeś to wyżej.
Hej muisz zaimplementować interfejs IEnumerable.


public class sstack : IEnumerable
{
       public IEnumerator GetEnumerator()
        {
            return lista_stack.GetEnumerator();
        }
}

Przy okazji zamiast listy użyj tablicy i nie powinieneś wczytywać danych w wewnątrz stacku tylko robić to main'ie korzystając ze swojej klasy. Zobacz jak wygląda stadndardowy stack w C# i próbuj napisać maksymalnie podobny zachowując na nazewnictwo.

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