Tema: Re: VB.Net struktura
Autorius: Jornada Del Muerto
Data: 2010-04-25 14:20:20
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 
>