C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Tip: System.Linq allows us to invoke the ToList extension method on the array reference.
LINQ4 elements: The program uses an array initializer to specify that the array has 4 elements.
Initialize ArrayNext: The ToList extension method is called on that array reference. ToList is an extension method from the System.Linq namespace.
ExtensionAnd: It is called in the same way as an instance method is called. It returns a new List of string instances.
StringsConsoleC# program that uses ToList extension method
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
//
// Use this input string[] array.
// ... Convert it to a List with the ToList extension.
//
string[] array = new string[]
{
"A",
"B",
"C",
"D"
};
List<string> list = array.ToList();
//
// Display the list.
//
Console.WriteLine(list.Count);
foreach (string value in list)
{
Console.WriteLine(value);
}
}
}
Output
4
A
B
C
D
Version 1: This version of the code uses ToList to get a list from an array. The array creation is not included in the time.
Version 2: Here we use the List constructor to get a List from the array. The result is same as in version 1.
Result: The List() constructor performs slightly faster on an int array. When possible, it is worth using the List constructor.
C# program that benchmarks ToList
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
class Program
{
const int _max = 1000000;
static void Main()
{
int[] array = new int[] { 10, 20, 30, 40, int.MaxValue, int.MinValue };
var s1 = Stopwatch.StartNew();
for (int i = 0; i < _max; i++)
{
// Version 1: use ToList.
var list = array.ToList();
if (list.Count != 6)
{
return;
}
}
s1.Stop();
var s2 = Stopwatch.StartNew();
for (int i = 0; i < _max; i++)
{
// Version 2: use List constructor.
var list = new List<int>(array);
if (list.Count != 6)
{
return;
}
}
s2.Stop();
Console.WriteLine(((double)(s1.Elapsed.TotalMilliseconds * 1000000) /
_max).ToString("0.00 ns"));
Console.WriteLine(((double)(s2.Elapsed.TotalMilliseconds * 1000000) /
_max).ToString("0.00 ns"));
Console.Read();
}
}
Output
108.43 ns ToList
102.45 ns List constructor (new List)
Then: ToList invokes the List type constructor with the instance parameter. So it is a wrapper method for the List constructor.
NullTip: This means that using "instance.ToList()" is similar to using "new List<T>(instance)" where T is the type.
Constructor