Thread View: be.comp.programming
3 messages
3 total messages
Started by Snuyt
Fri, 02 Jan 2004 13:43
enkele VB .NET vraagjes
Author: Snuyt
Date: Fri, 02 Jan 2004 13:43
Date: Fri, 02 Jan 2004 13:43
30 lines
1929 bytes
1929 bytes
Enkele kleine, maar niet onbelangrijke vraagjes:
dim col as collection 'collection van objecten van klasse A
public function iets(b as A) as A
dim a1, a2 as A
for each a1 in col
if (b.value() = a1.value()) then a2=a1
next
return a2
end function
(value is gewoon een methode die een of andere waarde weergeeft, details
zijn onbelangrijk)
Dus deze functie geeft een object van de klasse A terug indien de value
gelijk is aan die van de meegegeven b.
1. aangezien het niet gedefinieerd is welke objecten er in een
collection zitten, weet de compiler dat er in de for each lus met
objecten van klasse A gewerkt wordt? Wordt dit op een impliciete manier
gecast of zo?
2. het is ook mogelijk dat er in col geen enkel object zit, gelijk aan
b. Wat wordt er dan door de functie weergegeven? 'Nothing'? Runtime Error?
Ik hoop dat de vragen duidelijk zijn.
bedankt,
Snuyt
Re: enkele VB .NET vraagjes
Author: KLinZ
Date: Fri, 02 Jan 2004 17:51
Date: Fri, 02 Jan 2004 17:51
39 lines
2601 bytes
2601 bytes
Snuyt wrote: > Enkele kleine, maar niet onbelangrijke vraagjes: <snip code+details> > Dus deze functie geeft een object van de klasse A terug indien de > value gelijk is aan die van de meegegeven b. > > 1. aangezien het niet gedefinieerd is welke objecten er in een > collection zitten, Hoezo niet gedefinieerd? Je bedoelt dat je verschillende soorten objecten in een collection kunt douwen? > weet de compiler dat er in de for each lus met > objecten van klasse A gewerkt wordt? Wordt dit op een impliciete > manier gecast of zo? Zou kunnen, maar lijkt me niet nodig. De compiler hoeft voor de for-each loop nog niet te weten wat het type van een element uit col[] is. Dit wordt waarschijnlijk pas bij het aanroepen van de methods belangrijk. Waarom wil je dat weten? Of eigenlijk: wat wil je met deze kennis gaan doen? Je kunt ook de gegenereerde MSIL code bekijken om er achter te komen hoe het werkt :-) Probleem is alleen dat die erg ranzig is in het geval van VB.Net. > 2. het is ook mogelijk dat er in col geen enkel object zit, gelijk aan > b. Wat wordt er dan door de functie weergegeven? 'Nothing'? Runtime > Error? Ik zou a2 aan het begin van de functie 'Nothing' maken, nu lijkt het resultaat ongedefinieerd. Maar mijn gut feeling zegt dat variabelen in VB.Net, mits als object gedefinieerd, sowieso op 'Nothing' geinitialiseerd worden. Zou je even in de documentatie moeten kijken of dat waar is. Ik zou er persoonlijk niet op vertrouwen. -- www.zenobits.com
Re: enkele VB .NET vraagjes
Author: Lazarus Lang
Date: Sat, 03 Jan 2004 11:33
Date: Sat, 03 Jan 2004 11:33
41 lines
2834 bytes
2834 bytes
Snuyt, mijn antwoorden inline... "Snuyt" <snuyt_nospam@skynet.be> wrote in message news:3ff57589$0$6628$ba620e4c@news.skynet.be... > dim col as collection 'collection van objecten van klasse A Niet noodzakelijk van klasse A, zoals je zelf al schreef. :) > public function iets(b as A) as A > dim a1, a2 as A > for each a1 in col > if (b.value() = a1.value()) then a2=a1 > next > return a2 > end function > 1. aangezien het niet gedefinieerd is welke objecten er in een > collection zitten, weet de compiler dat er in de for each lus met > objecten van klasse A gewerkt wordt? Wordt dit op een impliciete manier > gecast of zo? Ja, dat gebeurt in de achterliggende IL code van de "for each". Daar gebeurt een enumeratie en een conversie naar het type A. Als dat niet lukt krijg je wsch. een InvalidCastException in je gezicht gesmeten. Trouwens, als je even de moeite neemt om te sjekken op je MSDN cd (of op de site) lees je bij For Each het volgende: "A For Each...Next statement loops based on the elements in an expression. A For Each statement specifies a loop control variable and an enumerator expression. The type of the value returned by the expression in the For Each statement must be a collection type (defined below), and an implicit conversion must exist from the element type of the collection to the type of the loop control variable. ... " > 2. het is ook mogelijk dat er in col geen enkel object zit, gelijk aan > b. Wat wordt er dan door de functie weergegeven? 'Nothing'? Runtime Error? Nothing. Alle variabelen in VB.Net worden (net zoals in de klassieke VB vroeger) geinitialiseerd op 0 (voor numerieke variabelen) of Nothing (voor object references v/h type String (!), Integer (!!!), Form, etc...) eltwo
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads