Toon posts:

[VB.NET] Collections

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een Collection aangemaakt en daarin zitten verschillende soorten objecten.

Een voorbeeld zou dus kunnen zijn een Collection met strings,integers,files,etc.

Nu wil ik door de collectie heen lopen en alleen een bepaald type object weergeven.

Dit werkt niet:
Visual Basic .NET:
1
2
3
For Each myString as String in myCollection
Console.Out.WriteLine(myString)
Next


Ik krijg dan een Casting error. Hij kan dus als hij een integer tegenkomt er niet een string van maken. Ik wil alle objecten behalve strings, in de collectie dus overslaan.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
je moet denk je hele collection doorlopen en controleren op type dus zo in c#
C#:
1
2
3
4
5
6
7
foreach( object element in myCollection )
{
    if( element is string )
    {
        //doe wat
    }
}

[ Voor 3% gewijzigd door Woy op 24-06-2003 11:44 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
Thanks.. min of meer gelukt maar:

Ok hier wil dus die bepaalde objecten eruit halen. Ik krijg nu een Object reference not set to an instance of the object error. Maar ik snap niet waarom.

Visual Basic .NET:
1
2
3
For Each myProbe As Probe In mycircuit.getProbes
            Console.Out.WriteLine(myProbe.Name + " " + myProbe.Input.ToString)
        Next


Ik heb hiervoor een aparte property gemaakt. Het object zelf zorgt ervoor dat er in die property alleen die soorten objecten zitten.

Code van de property:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public ReadOnly Property getProbes() As Collection
        Get
            Dim j As Integer
            For j = 1 To _ProbesOnly.Count 'Clear collection first
                _ProbesOnly.Remove(1)
            Next
            Dim i As Integer
            For i = 1 To _Nodes.Count
                If TypeOf _Nodes(i) Is Probe Then
                    _ProbesOnly.Add(_Nodes(i))
                End If
            Next
        End Get
    End Property

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Visual Basic .NET:
1
2
3
4
5
6
For Each myProbe As Object In mycircuit.getProbes
    If TypeOf MyProbe Is Probe Then
        Dim _probe as Probe = CType(MyProbe,Probe)
        Console.Out.WriteLine(_probe.Name & " " & _probe.Input.ToString)
    End if
Next

[ Voor 10% gewijzigd door gorgi_19 op 24-06-2003 12:17 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Oke maar waarom?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Werkt die methodiek van mij niet?
Object not reference lijkt me een casting probleem...
Visual Basic .NET:
1
Dim objProbe as Probe = myprobe

en myprobe is van het type AlsoProbe, dan zal hij hier geen foutmelding geven, maar blijft objProbe Nothing.

[ Voor 43% gewijzigd door gorgi_19 op 24-06-2003 12:19 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op 24 June 2003 @ 12:17:
[...]

Werkt die methodiek van mij niet?
Weet ik nog niet.... ik snap niet waarom dat zou moeten...

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 24 June 2003 @ 12:19:
[...]


Weet ik nog niet.... ik snap niet waarom dat zou moeten...
Uberhaupt zal hij niet werken, want een arraylist begint met z'n index vanaf 0 te tellen en niet vanaf 1.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • GigaDave56
  • Registratie: Juni 2001
  • Laatst online: 14-12-2025
[quote]

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public ReadOnly Property getProbes() As Collection
        Get
            Dim j As Integer
            For j = 1 To _ProbesOnly.Count 'Clear collection first
                _ProbesOnly.Remove(1) <- moet dit niet .Remove(j) zijn?
            Next
            Dim i As Integer
            For i = 1 To _Nodes.Count
                If TypeOf _Nodes(i) Is Probe Then
                    _ProbesOnly.Add(_Nodes(i))
                End If
            Next
        End Get
    End Property



Voor de rest geen idee, zag alleen een cruciaal foutje :Y)

[edit]
Eigen fout ingezien 8)7 Bedankt DaftPunkNL. Mij gaat met een beginnersboekje in een hoek zitten... O-)

[ Voor 10% gewijzigd door GigaDave56 op 24-06-2003 13:18 ]

Not so Giga One
> I'd sell my soul for you, babe
> For money to burn, for you
> I'd give you all and have none, babe
> Just to, just to, to have you here by me... [Scooter - Rebel yell]


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
Omdat je een null value uitleest.

https://fgheysels.github.io/


Verwijderd

Topicstarter
[quote]GigaDave56 schreef op 24 June 2003 @ 12:27:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public ReadOnly Property getProbes() As Collection
        Get
            Dim j As Integer
            For j = 1 To _ProbesOnly.Count 'Clear collection first
                _ProbesOnly.Remove(1) <- moet dit niet .Remove(j) zijn?
            Next
            Dim i As Integer
            For i = 1 To _Nodes.Count
                If TypeOf _Nodes(i) Is Probe Then
                    _ProbesOnly.Add(_Nodes(i))
                End If
            Next
        End Get
    End Property



Voor de rest geen idee, zag alleen een cruciaal foutje :Y)
Nee, omdat de collectie bij 1 begint en niet bij 0. En daarnaast als je een item verwijderd dan wordt de collectie opnieuw geindexeerd. Dus je kunt gewoon item 1 blijven weghalen.

Verwijderd

Topicstarter
whoami schreef op 24 June 2003 @ 12:34:
[...]


Omdat je een null value uitleest.
Ja maar waarom is deze null? De probes objecten zijn gewoon gekopieerd

Verwijderd

Topicstarter
Gevonden.... In de Get gedeelte van de property vergeten om return _ProbesOnly neer te zetten....... soms is het zo makkelijk dat... ach je kent het wel....
Pagina: 1