homelinksBlijf op de hoogte van de recente aanpassingen op vbvoorbeelden!
Visual Basic 2010 Voorbeelden

visual basic 2010 broncode voorbeelden

Microsoft Visual Studio 2010Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

23.15. Constraints bij Genericiteit

Print Email Deel op Facebook Deel op Twitter

Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

Het is mogelijk bepaalde beperkingen op te leggen aan de actuele parametertypes die worden ingevuld in een generieke constructie.
Deze beperkingen worden "constraints" genoemd.

Men zou bijvoorbeeld een typeparameter kunnen beperken tot types die de IComparable interface implementeren (1), dit dan om te vereisten dat men ergens in de implementatie van de generieke constructie gebruik kan maken van het bepalen van de volgordelijkheid tussen objecten van dat type.

Men kan typeparameters beperken tot types die een bepaalde basisklasse hebben (1), of beperken tot types die een default constructor hebben (1), of beperken tot reference- (2) of valuetypes (3).

Bij meerdere constraints plaats je de verschillende constraints, afgescheiden door kommas, tussen accolades {}.
Visual Basic 2010 Broncode
Class BaseClass
End Class
Class Generic1(Of T As {IComparable, IEquatable(Of T), BaseClass, New})    ' (1)
End Class
Class Generic2(Of T As Class)                                              ' (2)
End Class
Class Generic3(Of T As Structure)                                          ' (3)
End Class
Generic1 vereist een typeparameter die de IComparable interface en een generische instantie van de IEquatable(Of T) interface implementeert.
Generic1 vereist ook een typeparameter van het type BaseClass ( of afgeleid ).  En Generic1 vereist een typeparameter die over een parameterloze constructor beschikt.

Een constraint als New zou je opnemen als ergens in de implementatie van de generieke constructie een instantie wordt gecreëerd en men zeker wil zijn dat men geen parameters hoeft op te geven bij het construeren van dergelijk object.

Men kan maximaal één basisklasse als constraint opgeven.

De constraints BaseClass en Class kunnen niet worden gecombineerd.  BaseClass impliceert immers reeds een Class-constraint.

De constraints Structure en New kunnen niet worden gecombineerd.  Men kan in een structure immers nooit een parameterloze constructor definieren.

Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.