Database velden kunnen de waarde NULL (niet gerefereed bevatten) hebben.
Dit geld NIET ook voor velden die binnen .NET gerepresenteerd worden door native type, zoals bijvoorbeeld int, bool, long etc.
Echter is het niet mogelijk om deze velden de waarde NULL te geven.
Nu heb ik situaties waarin ik het volledige bereik van native type variabele wil gebruiken, maar het toch mogelijk is dat de waarde NULL kan zijn. Bij een bool is dit al snel het geval . De waarde kan true of false zijn maar ik wil ook de waarde NULL hebben.
Om dit "te kort" te kunnen compenseren heb ik de volgende oplossingen bedacht:
1. Extra velden.
Je kunt een extra variabele aanmaken die aangeeft of het veld NULL is.
Dit heeft als voordeel dat de variabele waarde nog steeds als native value reageert en weining ruimte in beslag neem. Echter vind ik het erg omslachtig en voelt het niet goed aan. Ik controleer liever of een waarde NULL is door waarde == null.
2. Een object maken waarin de native type wordt opgenomen
Dit heeft als voordeel dat er natuurlijk mee om gegaan kan worden, echter verliest dit object wel de native type functionaliteit.
Hoe lossen jullie dit op?
Is het mogelijk om optie 2 toe te passen en er toch voor te zorgen dat het object reageert als native type en dan vooral dat ie by value wordt doorgegevn ipv by reference?
Is het mogelijk om b.v. dit te doen: int a = (int) new IntegerOwn(2); ?
En zo ja hoe defineer ik dan in IntegerOwn dat deze cast mogelijk is?
Dit geld NIET ook voor velden die binnen .NET gerepresenteerd worden door native type, zoals bijvoorbeeld int, bool, long etc.
Echter is het niet mogelijk om deze velden de waarde NULL te geven.
Nu heb ik situaties waarin ik het volledige bereik van native type variabele wil gebruiken, maar het toch mogelijk is dat de waarde NULL kan zijn. Bij een bool is dit al snel het geval . De waarde kan true of false zijn maar ik wil ook de waarde NULL hebben.
Om dit "te kort" te kunnen compenseren heb ik de volgende oplossingen bedacht:
1. Extra velden.
Je kunt een extra variabele aanmaken die aangeeft of het veld NULL is.
code:
1
2
| bool waardeIsNull; int waarde; |
Dit heeft als voordeel dat de variabele waarde nog steeds als native value reageert en weining ruimte in beslag neem. Echter vind ik het erg omslachtig en voelt het niet goed aan. Ik controleer liever of een waarde NULL is door waarde == null.
2. Een object maken waarin de native type wordt opgenomen
Dit heeft als voordeel dat er natuurlijk mee om gegaan kan worden, echter verliest dit object wel de native type functionaliteit.
Hoe lossen jullie dit op?
Is het mogelijk om optie 2 toe te passen en er toch voor te zorgen dat het object reageert als native type en dan vooral dat ie by value wordt doorgegevn ipv by reference?
Is het mogelijk om b.v. dit te doen: int a = (int) new IntegerOwn(2); ?
En zo ja hoe defineer ik dan in IntegerOwn dat deze cast mogelijk is?
[ Voor 7% gewijzigd door vinnux op 22-12-2005 12:23 ]