|
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
Klassen in .NET bevatten allerhande declaratieve informatie dat beschrijft hoe een klasse werkt. Zo heb je accessmodifiers als Public, Protected, Friend, Protected Friend en Private die de toegankelijkheid van klassen, velden of andere members beschrijven. Er zijn ook sleutelwoorden als MustInherit, NotInheritable, MustOverride en Overrides die het inheritance en polymorfisch gerelateerde gedrag definiëren van een klasse of member.
Daarnaast is er nog iets als declaratieve attributen die geassocieerd kunnen worden met een bepaalde entiteit in .NET. Deze attributen worden gestockeerd in de metadata van dat type en zijn ten allen tijd beschikbaar ( via "reflection" ). Dergelijke attributen dienen om de declaratie op een bepaalde wijze aan te passen. 25.1.1. Obsolete AttributeDe FCL bevat tal van voorgedefinieerd attributen, een voorbeeld daarvan is het <Obsolete()> attribuut, deze kan gebruikt worden om een waarschuwing met een klasse of een member te associëren. Dit is bijvoorbeeld ideaal om aan andere ontwikkelaars te laten weten dat er nieuwe versies van klassen of members beschikbaar zijn. Visual Basic 2010 Broncode <Obsolete( "OldClass is obsolete. Use NewClass.")> _ Class OldClassEnd ClassClass NewClass <ObsoleteAttribute( "Method1 is obsolete. Use Method2.")> _ Public Sub Method1() End Sub Public Sub Method2() End SubEnd ClassClass ObsoleteAttributeExample Public Shared Sub Main() Dim object1 As New OldClass Dim object2 As New NewClass object2.Method1() End SubEnd ClassDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Visual Studio : In de tasklist vind je nu waarschuwingen omtrent het gebruik van deze obsolete ( gedateerde/vervallen ) entiteiten. Slechts een waarschuwing, het programma compileert nog altijd. Tenzij je in de project properties op de "Compile" tab "Treat all warnings as errors" aanvinkt. Of tenzij je de "/warnaserror" schakel gebruikt voor de VBC commandline compiler. De volledige identifier van een attribuut heeft steeds een suffix "Attribute", maar die mag men in een aanroep naar dat attribuut ook steeds weglaten. ObsoleteAttribute of Obsolete is dus identiek.
De string parameter is hier optioneel. Een attribuut wordt gedefinieerd door een klasse, hier een klasse met een string parameter om de message in te stellen. boven
25.1.2. ParamArray AttributeVisual Basic gebruikt ook andere attributen om features uit de taal te implementeren. Bijvoorbeeld bij het declareren van een method met een argumentenlijst van variabele lengte, kan het keyword ParamArray gebruikt worden. Dit keyword wordt eigenlijk omgezet naar een ParamArrayAttribute. Visual Basic 2010 Broncode Class ParamArrayAttributeExample Public Shared Sub Main() Console.WriteLine(GetSum1(1, 2, 3)) Console.WriteLine(GetSum2(4, 5, 6, 7, 8)) Console.ReadLine() End Sub Public Shared Function GetSum1( _ ByVal ParamArray numbers As Integer()) As Integer For Each number As Integer In numbers GetSum1 += number Next End Function Public Shared Function GetSum2( _ <ParamArrayAttribute()> ByVal numbers As Integer()) As Integer For Each number As Integer In numbers GetSum2 += number Next End FunctionEnd ClassDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Console Application Output 6
30 Het ParamArray attribuut wordt hier toegepast op parameter niveau, andere attributen kunnen slaan op klasse en/of member niveau ( zoals ObsoleteAttribute ) of kunnen zelfs toegepast worden op assembly niveau.
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
|