Paprasti masyvai labai retai realiai tinka ipac tokiem uzdaviniam kur yra kazkoks duomenu surinkimas ir kazkokiu nariu kiekis skiriasi kaip pvz tevai, paprasciau butu naudoti tam System.Collections.Generic;
Parasysiu ant C# generic colletion'am reik .NET 2005, framework 2.00, 1.x dar to nebuvo.
public class mazgas { // galima ir public struct bet cia ner didelio skirtumo, tik tas kad galesi rasyt ir metodus jei reiks
public string name;
public int tevuKiek; // jei cia grazini tevuNr.Length tada galima kitaip tai padaryt :
public int tevuKiek {
get {
return tevuNr.Count; // masyvo atveju butu .Length, bet List atveju .Count;
}
}
public List<int> tevuNr = new List<int>(); // kiek kishi i cia elementu tiek ir bus, nereik grieztos deklaracijos, tai taip pat puikiai serializuojasi
public int tikKiek;
public List<double> tikim = new List<double>(); // cia ir taspats, kishi kiek noresi elementu
}
Va tik nezinau kaip ant VB.NET tai butu, bet manau rasi.
List<> duoda tau galimybe sukurt generic collectiona i kuri pridedi kiek nori elementu, darbas su ja, pvz:
List<int> skaiciai = new List<int>();
tada kishi skaicius:
skaicia.Add(10);
skaiciai.Add(20);
Tikrini ar turi kazkoki elementa:
if ( skaiciai.Contains(20) ) {
Toliau kreiptis:
System.Diagnostics.Debug.Print( skaiciai[20].ToString() );
Ir viskas, ner nieko patogiau uz tai ;)
nori processint visas reiksmes:
foreach(int s in skaiciai) {
System.Diagnostics.Debug.Print( s.ToString() );
}
Taip pat List<T> galima dinamiskai inicializuoti su kazkuo, rasau is oro tai gal biski klaidu bus, bet ideja pacia suprasi:
List<T> skaiciai = new List<T>( { 10,15,20 } ); // taip pat po to galesi keist elementu skaiciu
O jei blogai pamenu ir jei ner tokio konstruktoriaus, tai tikrai turi but metodas, bet man rodos yra ;) seniau baisulinius duomenu medzius taip suincializuodavau kai teko..
Pasiskaityk daugiau apie s.Collections.Generic manau patiks ;) be ju as siuolaikinio .net programmingo nelabai isivaizduoju, issisprendzia masyvo gylio problema ir jie tampa visai dinaminiais, dar labai idomus dalykas yra Dictionary<key,value> be to irgi sunku ;)
Sekmes!
"va" <va@va.va> wrote in message news:hr0t87$1ba$1@trimpas.omnitel.net...
> Kompileris tokiu atveju sake: Arrays declared as structure members cannot be
> declared with an initial size.
>
> Pagal http://msdn.microsoft.com/en-us/library/78kf2xd4%28v=vs.71%29.aspx
> reikejo panaudoti ReDim:
> Dim tinklas(20) As mazgas
> ReDim tinklas(0).tevuNr(5)
> 'tada jau galima ir viskas veikia kaip ir noretus:
> tinklas(0).tevuNr(0) = 9
>
> Aisku, ne ypac patogu kiekviena karta atsiradus naujam irasui i sarasa
> ReDim'int, turetu but optimalesnis sprendimas. Bandziau su ArrayList'u, bet
> ten irgi bedos :)
>
> "rl" <ask@me.for> wrote in message news:hqvbn6$ab$1@trimpas.omnitel.net...
>> Structure mazgas
>> Public name As String
>> Public tevuKiek As Integer
>> Public tevuNr(5) As Integer
>> Public tikKiek As Integer
>> Public tikim(32) As Double
>> End Structure
>