Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
What are Lists? | Additional Structures & File Handling
C# Beyond Basics

bookWhat are Lists?

Imagine we have a situation where we want to store the names of all the students that are taking a certain course. The first solution we can come up is to create an Array:

cs

index

copy
using System;

class Program
{
string[] studentNames = new string[50];
}
123456
using System; class Program { string[] studentNames = new string[50]; }

However, if at some point are more than 50 students, we won't be able to store their names. Similarly, in a situation where there are less than 50 students, the unoccupied spaces in the array will be a waste of memory - this becomes a problem in especially large arrays.

Here we need a new structure which can store a variable amount of elements. Luckily such a structure already exists, it's called a List.

Lists are very similar to Arrays, however the number of elements that are stored in a list are changeable.

Following is the syntax for declaring an empty list:

Using this syntax we can create a list for storing the Students' names:

cs

index

copy
using System;
using System.Collections.Generic;

class Program
{
static void Main(string[] args)
{
List<string> students = new List<string>();
}
}
12345678910
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); } }

It is important to note that we need to import the Generic module to be able to use Lists.

You simply need to add this line under using System; to import the required module.

Add() Method

We can add elements to a list by using the Add method:

cs

index

copy
using System;
using System.Collections.Generic;

class Program
{
static void Main(string[] args)
{
List<string> students = new List<string>();

students.Add("Anna");
students.Add("Laura");
students.Add("Jacob");
students.Add("Aron");
}
}
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); } }

The above code will add four elements to the students list.

Just like an Array of type string can only contain string elements. A list of type string can only accept string elements.

Indexing

The first element is Anna hence it will have the index 0, while Laura will have the index 1 and so on. Elements of a list can be accessed via indexing just like an array:

cs

index

copy
using System;
using System.Collections.Generic;

class Program
{
static void Main(string[] args)
{
List<string> students = new List<string>();

students.Add("Anna");
students.Add("Laura");
students.Add("Jacob");
students.Add("Aron");

Console.WriteLine(students[2]);
}
}
1234567891011121314151617
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); } }

Count() Method

We can retrieve the length of a list using its Count attribute:

cs

index

copy
using System;
using System.Collections.Generic;

class Program
{
static void Main(string[] args)
{
List<string> students = new List<string>();

students.Add("Anna");
students.Add("Laura");
students.Add("Jacob");
students.Add("Aron");

Console.WriteLine(students[2]);
Console.WriteLine(students.Count);
}
}
123456789101112131415161718
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); Console.WriteLine(students.Count); } }

Dynamic Length

Note that the length of a list is dynamic (changeable), so it changes as we add elements:

cs

index

copy
using System;
using System.Collections.Generic;

class Program
{
static void Main(string[] args)
{
List<string> students = new List<string>();

Console.WriteLine(students.Count);
students.Add("Anna");
Console.WriteLine(students.Count);
students.Add("Laura");
Console.WriteLine(students.Count);
students.Add("Jacob");
Console.WriteLine(students.Count);
students.Add("Aron");
Console.WriteLine(students.Count);
}
}
1234567891011121314151617181920
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); Console.WriteLine(students.Count); students.Add("Anna"); Console.WriteLine(students.Count); students.Add("Laura"); Console.WriteLine(students.Count); students.Add("Jacob"); Console.WriteLine(students.Count); students.Add("Aron"); Console.WriteLine(students.Count); } }

Initialization

We can also initialize a list with some elements using the following syntax:

List<dataType> listName = new List<dataType>{ element1, element2, };

For-example:

cs

index

copy
using System;
using System.Collections.Generic;

class Program
{
static void Main(string[] args)
{
List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" };

// It is still possible to add additional elements after initialization
students.Add("Markus");

Console.WriteLine(students.Count);
Console.WriteLine(students[4]);
}
}
12345678910111213141516
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; // It is still possible to add additional elements after initialization students.Add("Markus"); Console.WriteLine(students.Count); Console.WriteLine(students[4]); } }

Looping Through Lists

Looping through a List similar to how we would loop through Arrays

- Using a for-loop:

cs

index

copy
using System;
using System.Collections.Generic;

class Program
{
static void Main(string[] args)
{
List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" };

for (int i = 0; i < students.Count; i++)
{
Console.WriteLine(students[i]);
}
}
}
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; for (int i = 0; i < students.Count; i++) { Console.WriteLine(students[i]); } } }

- Using a foreach loop

cs

index

copy
using System;
using System.Collections.Generic;

class Program
{
static void Main(string[] args)
{
List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" };

foreach (string studentName in students)
{
Console.WriteLine(studentName);
}
}
}
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; foreach (string studentName in students) { Console.WriteLine(studentName); } } }

Tip:

To make the declaration syntax shorter we can also use implicit declaration. To recall, an explicit declaration is when we specify the data type during variable declaration, for-example:

cs

index

copy
float number = 7.9f;
1
float number = 7.9f;

On the other hand, in implicit declaration we can simply use the var keyword and the compiler automatically infers the data type of the variable according to the assigned value:

cs

index

copy
var number = 7.9f;
1
var number = 7.9f;

We can use implicit declaration when declaring lists as well:

var listName = new List<dataType>();
// or
var listName = new List<dataType>{ element1, element2, };

For-example:

cs

index

copy
var numbers = new List<int> { 1, 2, 3, 4, 5 };
1
var numbers = new List<int> { 1, 2, 3, 4, 5 };
1. What will be the output of the following code:
2. Which module is needed to be imported for using lists?
3. Which method is used for retrieving the size (length) of a list?
What will be the output of the following code:

What will be the output of the following code:

List<bool> options = new List<bool> { true, false, false, true, true, true, false };

bool result = false;
foreach (bool option in options)
result = result || option;

Console.WriteLine(result);

Selecione a resposta correta

Which module is needed to be imported for using lists?

Which module is needed to be imported for using lists?

Selecione a resposta correta

Which method is used for retrieving the size (length) of a list?

Which method is used for retrieving the size (length) of a list?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 1
some-alt