The PIT
Röster från ITM-koncernen.

Nyheter i VS2008/VB9 #2

June 13, 2008 12:47 by Stefan Karlsson

Tänkte skriva lite om två andra nyheter, nämligen nullable types och binary IF.

En nyhet är att man kan göra objekt till "nullable" genom att sätta ett frågetecken efter typdeklarationen av variabeln. För att göra en integer till nullable så gör man alltså så här:

Dim Count As Integer?

Detta gör att du kan testa om värdet är satt eller ej, till exempel på det här viset:

If Count Is Nothing Then MsgBox("Has no value")

Eller

If Count.HasValue = False Then MsgBox("Has no value")

En nullable type för två extra readonly propertys: HasValue och Value som kan användas för att undersöka om variabeln är satt eller är nothing.

Ihop med den nya Binary IF som påminner om gamla IIF(testexpression,falsepart,truepart) så kan man till exempel tilldela ett defaultvärde när man använder en nullable type:

Private b As Integer?

Private Sub test()

Me.Text = If(b, 4).ToString ' Returns 4 if b is null/nothing else returns b End Sub

Binary IF har en overload så antingen kan man skicka in  If (Testexpression As object, truepart As object) eller  If(Testexpression As boolean,falsepart As object, truepart As object)  i första fallet så förväntar den sig ett objekt av nullable type eller av reference type.  Skickar man in en variabel av nullable type och den är null/nothing så kommer falsepart att returneras, är den ej null/nothing så returnerar den sig själv.

Nedanstående kommer att returnera 4 första gången Test() körs och 55 andra gången. 

 

Private b As Integer?

Private Sub Test()

Me.Text = If(b, 4).ToString ' Returns 4 if b is null/nothing else returns b

b = 55

End Sub

Detta fungerar såklart på andra objekt också, t.ex:

Private b As Object = Nothing

Private Sub Test()

Me.Text = If(b, 5).ToString

b = New Button With {.Name = "Min nya knapp"}

End Sub

Första gången Test() körs kommer me.text bli "5" andra gången kommer Me.Text bli objektets namn, i det här fallet "System.Windows.Forms.Button, Text: ".  Små små saker som kanske inte verkar vara så speciella, men som i realiteten ändrar en hel del på hur man kan bygga upp sina program logiskt. Undersök dem gärna mer.

Återkommer med LINQ och LAMDA expressions som är ganska så mindblowing när man börjar greppa det. I alla fall för mig.


Tags:
Categories: Programmering
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed