Course Content
C# Beyond Basics
C# Beyond Basics
Structs with Other Data Structures
Since structs are essentially data types, we can use them for creating Arrays and Lists as well:
index
using System; using System.Collections.Generic; struct Student { public string name; public int age; } class Program { static void Main() { // An array of 50 students Student[] studentsArr = new Student[50]; // A list of students List<Student> studentsList; } }
In a List or an Array, we would access a Student object's field using the following syntax:
index
variableName[index].fieldName
For-example:
index
// Array studentsArr[17].name = "Alex"; // List studentsList[27].age = 21; // Note: Both have the same syntax.
We can also loop through these arrays or lists to assign or access data. For-example the following code loops through a List of Students
objects and calculates the average age:
index
using System; using System.Collections.Generic; struct Student { public string name; public int age; } class Program { static void Main() { // Creating an array Student[] students = new Student[7]; // Setting some data students[0].age = 18; students[1].age = 13; students[2].age = 16; students[3].age = 21; students[4].age = 30; students[5].age = 36; students[6].age = 20; int totalAge = 0; for (int i = 0; i < students.Length; i++) { totalAge += students[i].age; } // Formula for average is "sum of elements / number of elements" float averageAge = totalAge / students.Length; Console.WriteLine($"Average Age: {averageAge}"); } }
It is clear that here the Student
struct acts like a data type. We can also use Student
as a dictionary value as well. Following is an example of using Struct as a value in a dictionary:
index
using System; using System.Collections.Generic; struct Student { public string name; public int age; } class Program { static void Main() { var studentsByID = new Dictionary<int, Student>(); Student student; student.name = "Thomas"; student.age = 36; studentsByID.Add(0, student); Console.WriteLine(studentsByID[0].name); } }
Thanks for your feedback!