Archief - vb.net: gewone variabelen -> niet reference

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

KiLLahFreak

Legacy Member
hoi,

wat ik raar vind de gewone variabelen (primitieve in java) zoals byte, integer, enzo kunnen in vb.net ook gebruik maken van methods zoals equals dus -> vb behandelt die dan als objecten ? ben ik juist?
Toch dacht ik dat die variabelen hun eigenlijke waarde bevatten terwijl variabelen die naar een object verwijzen toch enkel maar een reference hebben naar het object

dus zouden dit hier dan objecten zijn die in hun variabele geen referentie hebben maar value's klopt dit?

alvast dank
griets
KiLLah

KiLLahFreak

Legacy Member
thx ik heb de artikel juist gelezen maar ze spreken daar van struct wat kan ik me daar bij voorstellen (heb nooit c of afgeleiden hiervan gehad)

als ik het goed begrijp is dan eigenlijk alles een klasse, maar omwille van de makkelijkheid kun je (de normale primitieve types) ook als gewone variabelen behandelen, alsook als klasse
ben ik juist?

thx m8
KiLLah

Cakeman

Legacy Member
Uit mijn C# boek:

A struct is a user-defined type, a lightweight alternative to classes. Structs are similar to classes in that they may contain constructors, properties, methods, fields, operators, nested types ad indexers.

There are also significant differences between classes and structs. For instance, structs don't support inheritance or destructors. More important, although a class is a reference type, a struct is a value type. Thus, structs are useful for representing objects that do not require reference semantics.

The consensus view is that you ought to use structs ony for types that are small, simple, and similar in their behaviour and characteristics to built-in types.

Dit is meer een uitleg over wanneer je structs en wanneer je classes moet gebruiken, maar het toont wel aan dat de built-in types (integers enzo) gebaseerd zijn op structs.

KiLLahFreak

Legacy Member
thx cakeman is wel raar dat dat dan feitelijk toch als primitieve types meer word beschouwd (ik bedoel zonder referentie) , aangezien je daar toch ook methodes enzo kunt op toepassen

Cakeman

Legacy Member
Inderdaad, maar, zoals je zelf al zei, op int's kan je ook methodes toepassen (Equals). Structs zijn klein en simpel genoeg om meteen op de stack geplaatst te worden. Classes zijn ingewikkelder (onder andere door inheritance enzo) waardoor ze gewoon op de heap gegooid worden en er een reference van wordt bijhouden.

Aangezien structs en classes respectievelijk values en references voorstellen, is er ook een verschil qua prestatie in array-achtige structuren.

Structs gebruik je best in arrays en classes in collections.

KiLLahFreak

Legacy Member
Cakeman zei:
Inderdaad, maar, zoals je zelf al zei, op int's kan je ook methodes toepassen (Equals). Structs zijn klein en simpel genoeg om meteen op de stack geplaatst te worden. Classes zijn ingewikkelder (onder andere door inheritance enzo) waardoor ze gewoon op de heap gegooid worden en er een reference van wordt bijhouden.

Aangezien structs en classes respectievelijk values en references voorstellen, is er ook een verschil qua prestatie in array-achtige structuren.

Structs gebruik je best in arrays en classes in collections.

ah thx da van die arrays wist ik niet bedankt, ik dacht echter dat als je je variabele als value voorstelde dat er dan maar 1 waarde in kon en nu precies ook methodes met die structs, ik zal mij toch nog nekeer moeten goe informeren over structs
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan