Jak zrobić tablice obiektów która nie zaniknie poza zakresem?

0

Witam forumowiczów. Z racji że jestem początkującym programista i mam mały problem z obietkami. Mianowicie jak zrobić tablice obiektów która nie zaniknie poza zakresem?

0

Zadeklaruj ją jako pole klasy?
Użyj operatora new?
... ?

0

Nie wiem za bardzo w czym problem, tworzysz normalną tablicę (listę) i wypełniasz ją obiektami. To nie C++ gdzie trzeba było robić wskaźniki do obiektów żeby te nie były usuwane po wyjściu z funkcji. O ile będzie do tej tablicy jakakolwiek referencja, to będzie ona istniała razem z obiektami w niej zawartymi - Garbage Collector się jej nie tknie.

0
RudyPingwin napisał(a):

Witam forumowiczów. Z racji że jestem początkującym programista i mam mały problem z obietkami. Mianowicie jak zrobić tablice obiektów która nie zaniknie poza zakresem?

Poza jakim zakresem?
Na 90% chcesz utworzyć pole w klasie, no ale zawsze zostaje te 10%.

0

Jeszcze nie za bardzo kumam co próbujecie mi wytłumaczyć. Wytłumaczę to na przykładzie:
Mam form1 który clickbutton wywołuje metode obiektu x. Ta metoda w zależności od tego czy znajdzie w tekście dane tworzy tablice obiektów i wpisuje dane konstruktorem. Niestety po wywołaniu metody x i odwołania się z Form1 do tych stworzonych obiektów mam err 'Przykład' does not exist in the current context '

0

Pokaż kod. Ale na 99% dostałeś już dwukrotnie odpowiedź: pole klasy.

0

Problem jest w ostatniej linijce buttonclick. Tylko nie bić jak coś dopiero ogarniam:D

 private void bWczytaj_Click(object sender, EventArgs e)
        {
            OpenFileDialog oknWczytaj = new OpenFileDialog();
            oknWczytaj.Filter = "Pliki textowe (txt)|*.txt";
            String filepath = oknWczytaj.FileName;
            if (oknWczytaj.ShowDialog() == DialogResult.OK)
            {
                this.bWczytaj.BackgroundImage = global::MuOSystem.Properties.Resources.openok;

            }
            ExtractionHandler ParserSB = new ExtractionHandler(oknWczytaj.FileName);
            ParserSB.ExtractData();
            this.ListTextBox.Text = Npc[0].OldLine; <--Tutaj
        }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.IO;

namespace MuOSystem
{
    public class ExtractionHandler
    {
        #region Properties
        public string FIleToExtract { get; set; }
        #endregion

        #region Constructor
        public ExtractionHandler() { }

        public ExtractionHandler(string filename) { this.FIleToExtract = filename; }
        #endregion 

       

        #region Extraction

        public void  ExtractData()
        {

           
            try
            {

                string line;


                System.IO.StreamReader file = new System.IO.StreamReader(this.FIleToExtract);

                int i = 0;
                
                while ((line = file.ReadLine()) != null)
                {
                   

                    
                    char[] delimiterChars = { ' ', '\t' };
                    
                            if (!string.IsNullOrEmpty(line.Trim()))
                            {
                              if(!line.StartsWith("//") && (!line.StartsWith("1") && line.Length <=2))
                                        {
                                            line.Trim();
                                            string[] values = line.Split(delimiterChars);
                                             cNpc[] Npc = new cNpc[99];
                                            Npc[i] = new cNpc(0, line, Int32.Parse(values[0]), Int32.Parse(values[1]), Int32.Parse(values[2]), Int32.Parse(values[3]), Int32.Parse(values[4]), Int32.Parse(values[5]));
                                            i++;
                                            

                                        }

                               // }
                            }
                   
                    
                 }

                file.Close();
            }
            catch (Exception ex) { }


            return;
        }
        #endregion
    }
}
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MuOSystem
{

    public class cNpc
    {

                public cNpc(int a, string b, int c, int d, int e, int f, int g, int h)
                {
                    IdLine = a; OldLine = b; MonsterID = c; MapID = d; Distance = e; XPosition = f; YPosition = g; Dir = h;
                }
                public int IdLine;
                public string OldLine;
                public int MonsterID;
                public int MapID;
                public int Distance;
                public int XPosition;
                public int YPosition;
                public int Dir;
    }
}

0

POLE KLASY

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