Odczytanie elementu tablicy z klasy

0
using System;

namespace Program_program
{
	class Co_kolwiek
	{
		public int cc;
		public int[] iDane;
		
			public void Dzialanie()
			{
				int cc = new int ();
				int[] iDane = new int[4];
			
				for (int a=0;a<iDane.Length;a++)
				{
					cc=cc+10;
					iDane[a]=cc;
					Console.WriteLine("{0}", iDane[a]);
				}
			}
	
	}

    public class Program 
    {
           static void Main(string[] args)
           {
			Co_kolwiek tablica = new Co_kolwiek();
			tablica.Dzialanie();
			Console.WriteLine ("{0}",tablica); ???
           	Console.ReadKey(); 
           }
    }
}

Za pomocą jakiej komendy w pętli głównej odczytać np. wartość z iDane[0];

2

@zed1200:

int desiredValue = tablica.iDane[0];

Możesz też w klasie Co_kolwiek stworzyć sobie metodę int GetValue(int index), która zwracałaby wartość z twojej tablicy. Wtedy też zmień public int[] iDane; na private int[] iDane;. To jest tak zwana hermetyzacja w programowaniu, warto ją stosować. A poza tym to używaj języka angielskiego w kodzie.

0

@maszrum: Po wpisaniu

			tablica.Dzialanie();
			Console.WriteLine ("G {0}",tablica.iDane[0]);

Program kompiluje się lecz po uruchomieniu dostaję info:

Wyjątek nieobsłużony: System.NullReferenceException: Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu.
w Program_program.Program.Main(String[] args)

2

@zed1200: W metodzie Dzialanie w tym momencie nie używasz pól klasy cc i iDane tylko deklarujesz je na nowo jako lokalne. A przez to, że mają takie same nazwy jak pola w klasie to metoda używa tych lokalnych.

cc = new int ();
iDane = new int[4];
0

Dla mnie interesująca jest taka ciekawostka:

int cc = new int (); 
cc = cc + 10;

Taki zapis inicjalizacji w C# się wykonuje. Ale z tego co zerknąłem do książki Horstmana w Javie by nie przeszedł. A jak to wygląda w innych językach? I czy w ogóle inicjalizowanie w ten sposób jest prawidłową praktyką?

0

@maszrum: Dla formalności

using System;

namespace Program_program
{
	class Co_kolwiek
	{
		private int cc;
		public int[] iDane = new int[4];
		
			public void Dzialanie()
			{
			
				for (int a=0;a<iDane.Length;a++)
				{
					cc=cc+10;
					iDane[a]=cc;
					Console.WriteLine("{0}", iDane[a]);
				}
			}
	
	}

    public class Program 
    {
           static void Main(string[] args)
           {
			Co_kolwiek tablica = new Co_kolwiek();
			tablica.Dzialanie();
			Console.WriteLine ("G0 {0}",tablica.iDane[0]);
			Console.WriteLine ("G1 {0}",tablica.iDane[1]);
			Console.WriteLine ("G2 {0}",tablica.iDane[2]);
			Console.WriteLine ("G3 {0}",tablica.iDane[3]);
           	Console.ReadKey(); 
           }
    }
}

Temat do zamknięcia.

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