[C#] Problem z tablicą wewnątrz klasy

0

Witam,

Próbuję napisać w C# klasę którą chciałbym wywoływać z parametrem określającym rozmiar tablicy double zawartej w tej klasie.
W konstruktorze wywołuję funkcję która powinna wypełnić tablice doubli losowymi wartościami
i tu jest problem. Kiedy podam rozmiar tablicy wpisując liczbę np 3 to kod pięknie działa.
Kiedy chcę aby zmienna określała rozmiar tablicy to dostaję błąd mówiący o tym że wyszedłem poza zakres tablicy.
Proszę o wskazówki, co jest przyczyną błędu?

Napisane w SharpDevelop 3.0.0

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace test
{
	public partial class MainForm : Form
	{
		public MainForm()
		{
			InitializeComponent();
			
			neo obiekt = new neo(5,2.1,3.2);
			
			
		}
	}
	public class neo
	{
		public neo(int wej,double a, double b)
		{
			rozm=wej;
			this.a=a;
			this.b=b;
			funkcja();
		}
		
		public static int rozm;
		public double a,b;
		public double[] w = new double[rozm];
		
		public void funkcja()
		{
			Random los = new Random();
			for(int i=0;i<rozm;i++)
				w[i]=los.NextDouble();
		}
	}
} 

Pozdrawiam

0
            private void funkcja() //private nie public + przydaloby sie podawac jako parametr tablice
            {
                    Random los = new Random();
                    for(int i=0;i<rozm - 1;i++) //tu zmien
                            w[i]=los.NextDouble();
            }
0

public static int rozm; - jakas glupota, czemu static?
public double[] w = new double[rozm]; - glupowa nr 2, ktora wynika z glupoty nr 1
a z glupoty nr 1 i 2 wynikaja wszystkie problemy!

rozmiar nie moze byc polem static, jak nie wiesz co zmienia static to poczytaj, bo mi nie chce sie tego opisywac
tablica 'w' powinna byc utworzona na podstawie rozmiaru jaki przekazywany jest w konstruktorze

czemu problemy
poczatkowo rozm = 0 (domyslna wartosc int)
przed kodem w konstruktorze wykonuje sie incjalizacja tablicy 'w' o rozmiarze zero (bo taka jest obecnie wartosc pola rozm)
teraz wykonuje sie kod kontruktora, m.in. zmiana wartosci rozm na 5
wykonuje sie metoda funkcja(), ktora probuje przejsc przez zeroelementowa tablice, jakby miala piec elementow, stad IndexOutOfRangeException :)

0

Dziękuję za wyjaśnienia.

Pozdrawiam

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