Så fik jeg endelig noget VB kode ind i konkurrencen. Lækkert!
Lågens vinder har flottet sig og bygget et fedt library af extension methods til bla. generiske collections. Jeg synes der var andre der havde lavet noget næsten ligeså lækkert, men VB er efterhånden et sjældent syn og derfor synes jeg, jeg vil lade denne låge gå til Klaus Even Enevoldsen. TIllykke med dit nye Star Wars flagskib :)
Forøvrigt har Klaus en ganske fed blog på http://even.dk/
Module Module1
Sub Main()
' BigInteger sample
Dim A = New SortedSet(Of System.Numerics.BigInteger)()
A.Add(System.Numerics.BigInteger.One)
A.Add(System.Numerics.BigInteger.Zero)
A.Add(System.Numerics.BigInteger.MinusOne)
A.Add(CType(Int64.MaxValue, System.Numerics.BigInteger) + 1)
A.Add(CType(Int64.MinValue, System.Numerics.BigInteger) - 1)
Console.WriteLine(A.ToXmlString())
' Silly Parallel sample
Dim List = New List(Of System.Numerics.BigInteger)()
For i = 0 To 10
List.Add(i * 10)
Next
Console.WriteLine(List.AddOne().ToDelimitedString())
' My hopes
Console.WriteLine(String.Format("Will I Win The LEGO Clone Wars box? {0}", Boolean.TrueString.WillIWin()))
Console.ReadKey()
End Sub
End Module
Module ExtensionMethods
<System.Runtime.CompilerServices.Extension()>
Public Function ToXElement(Of T)(ByVal sortedSet As SortedSet(Of T)) As System.Xml.Linq.XElement
Dim Result = <SortedSet created=<%= Now().ToUniversalTime().ToString() %> datatype=<%= GetType(T).ToString() %>>
</SortedSet>
For Each Element In sortedSet
Result.Add(<Element><%= Element.ToString() %></Element>)
Next
Return Result
End Function
<System.Runtime.CompilerServices.Extension()>
Public Function ToXmlString(Of T)(ByVal sortedSet As SortedSet(Of T)) As String
Return sortedSet.ToXElement().ToString()
End Function
<System.Runtime.CompilerServices.Extension()>
Public Function WillIWin(Of T)(ByVal anything As T) As String
Return "Yes!"
End Function
<System.Runtime.CompilerServices.Extension()>
Public Function AddOne(ByVal list As List(Of System.Numerics.BigInteger)) As List(Of System.Numerics.BigInteger)
Dim Result = New List(Of System.Numerics.BigInteger)()
For Each item In list.AsParallel()
Result.Add(item.AddOne())
Next
Return Result
End Function
<System.Runtime.CompilerServices.Extension()>
Public Function AddOne(ByVal value As System.Numerics.BigInteger) As System.Numerics.BigInteger
Return value + 1
End Function
<System.Runtime.CompilerServices.Extension()>
Public Function ToDelimitedString(ByVal list As List(Of System.Numerics.BigInteger)) As String
Dim BobTheStringBuilder = New System.Text.StringBuilder()
For Each item In list
If BobTheStringBuilder.Length > 0 Then
BobTheStringBuilder.AppendFormat(", {0}", item.ToString())
Else
BobTheStringBuilder.Append(item.ToString())
End If
Next
Return BobTheStringBuilder.ToString()
End Function
End Module