Origin:http://www.dotnet2themax.com/blogs/fbalena/PermaLink,guid,b2a8f5e9-ddf1-45eb-ad8e-78c88c13ab2f.aspx
Consider the following code, that converts all the elements of an Int32 array into the corresponding hex value:
' VB
Dim intArray() As Integer = {4, 6, 9, 10, 99, 233, 34, 88, 189}
Dim hexArray(intArray.Length - 1) As String
For i As Integer = 0 To intArray.Length - 1
hexArray(i) = intArray(i).ToString( "X" )
Next
// C#
int [] intArray = {4, 6, 9, 10, 99, 233, 34, 88, 189};
string [] hexArray = new string [intArray.Length];
for ( int i = 0; i < intArray.Length; i++)
{
hexArray[i] = intArray[i].ToString( "X" );
}
The question is: how can you make this code more concise in .NET 2.0? The first answer that might come up is to use the Array.ConvertAll method together with a C#'s anonymous method:
string [] hexArray = Array .ConvertAll< int , string >(intArray, new Converter < int , string >(
delegate ( int n) { return n.ToString( "X" );}));
Actually, you can write even more concise code if you remember than the Microsoft.VisualBasic library already contains the Hex method, which matches the signature of the Converter<int,string> delegate. Using this method and delegate inference, you can shrink the code to:
' VB
Dim hexArray() As String = Array.ConvertAll( Of Integer , String )(intArray, AddressOf Hex)
// C#
string [] hexArray = Array .ConvertAll< int , string >(intArray, Microsoft.VisualBasic. Conversion .Hex );
I am certain that few C# developers will use this trick, but I thought it was worth mentioning. (Of course, you must add a reference to the Microsoft.VisualBasic.dll assembly if you work with C#.) The key idea, however, is that in some cases you don't need to write an anonymous method to accomplish a given task, because often you can find what you're looking for in the .NET Framework. For example, you can display all the elements of an array in the Console window with just one statement:
' VB
Array.ForEach(hexArray, AddressOf Console.WriteLine)
// C#
Array.ForEach(hexArray, Console.WriteLine);
There are many other methods in the VB library that you can use to convert all the elements of an array or a generic List, including UCase, LCase, LTrim, RTrim, and Trim.