Globalny dostęp do listy obiektów

0

Mam zestaw metod, które w zależności od wykonanej akcji modyfikują dane obiektów.
Problem jet w tym, że pod WinForm mam do list dostęp, a pod konsolą już nie:
O co chodzi?

Ten kod działa:

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        List<Piwo> browar = new List<Piwo>();
        
        public Form1()
        {
            Piwo ale = new Piwo();

            browar.Add(ale);
        }
    }
}

Ten kod nie działa:

namespace ConsoleApplication9
{
    class Program
    {
        List<Piwo> browar = new List<Piwo>();
        
        static void Main(string[] args)
        {
            Piwo ale = new Piwo();

            browar.Add(ale); 
        }
    }
}
0

W konsoli pole nie jest static a metoda jest.

1

Masz metodę statyczną i ją musisz mieć w programie konsolowym. Masz pole niestatyczne - albo robisz je statyczne, albo tworzysz instancję klasy.

0
Afish napisał(a):

Masz metodę statyczną i ją musisz mieć w programie konsolowym. Masz pole niestatyczne - albo robisz je statyczne, albo tworzysz instancję klasy.

Hmmm, problem mam taki, że zaraz po ustawieniu zmiennych były metody odpowiadające za rysowanie danych.
Jeżeli [main] musi być statyczne to za bardzo nie mam pomysłu jak z tego wybrnąć...

class Test
{
    class Program
    {
        List<Piwo> browar = new List<Piwo>(); //lista obiektów do rysowania/ nie działa bo MAIN STATIC
        
        static void Main(string[] args)
        {
            Piwo ale = new Piwo();
            browar.Add(ale);  //definiowanie obiektów

            while (window.IsOpen())
            {
                foreach (var data in Piwo)
                {
                    window.Draw(data);       //rysowanie obiektów
                }
                window.Display();
            }
        }

        public void window_MouseButtonPressed(object sender, EventArgs e)
        {
                foreach (var data in Piwo)
                {
                    data ++;       //modyfikacja obiektów
                }
        }
}
0

Najlepiej zdecyduj się, czy piszesz aplikację konsolową czy z WinFormsową. Odpowiedź na Twoje pytanie już padła:

Masz pole niestatyczne - albo robisz je statyczne, albo tworzysz instancję klasy.

0

Pytanie podstawowe. Czym w tym kodzie jest window?

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