C# - CRUD Operations on Arrays

CRUD Operations using Arrays in C#

Arrays are fundamental data structures in C#, offering efficient indexed storage of fixed-size, homogeneous data. CRUD stands for Create, Read, Update, and Delete – the four essential operations for managing any form of data. Although arrays in C# are fixed in size once created, understanding how to effectively perform CRUD operations with arrays is crucial to writing efficient and maintainable C# code.

Understanding Arrays in C#

Arrays are reference types in C# and are derived from the base System.Array class. They provide fast indexed access to elements and can hold primitive types (like int, double) or complex user-defined types (like class or struct).

Syntax Overview


// Declaration
int[] numbers = new int[5];

// Initialization
numbers[0] = 1;
numbers[1] = 2;

// Inline Initialization
int[] primes = new int[] {2, 3, 5, 7, 11};

Now, let’s dive into each aspect of CRUD operations on arrays in C#.

1. Create Operation

Creating Arrays

The Create operation refers to initializing and allocating memory for an array. Since arrays are reference types, using the new keyword allocates memory on the heap.

string[] fruits = new string[3];

This line declares and allocates space for 3 string elements, each initialized to null.

Initialization at the Time of Declaration

int[] ages = { 21, 25, 30, 35 };

Creating Multi-Dimensional Arrays

int[,] matrix = new int[2, 3] {
    {1, 2, 3},
    {4, 5, 6}
};

Creating Jagged Arrays

int[][] jagged = new int[3][];
jagged[0] = new int[] {1, 2};
jagged[1] = new int[] {3, 4, 5};
jagged[2] = new int[] {6};

2. Read Operation

Accessing Elements

Reading array values is done through indexed access:

Console.WriteLine(fruits[0]);

Remember, array indices start from 0. Accessing an index outside the bounds throws an IndexOutOfRangeException.

Looping Through Arrays

Using For Loop

for (int i = 0; i < fruits.Length; i++) {
    Console.WriteLine(fruits[i]);
}

Using Foreach Loop

foreach (string fruit in fruits) {
    Console.WriteLine(fruit);
}

Using LINQ

var filtered = fruits.Where(f => f.StartsWith("A"));

Array Properties Useful for Reading

  • Length: Total number of elements
  • Rank: Number of dimensions
  • GetLength(dimension): Number of elements in the specified dimension

3. Update Operation

Updating Individual Elements

fruits[1] = "Banana";

Updates the second element in the array.

Updating with Loops

Suppose we want to double every number in an integer array:

for (int i = 0; i < numbers.Length; i++) {
    numbers[i] *= 2;
}

Update Based on Condition

for (int i = 0; i < fruits.Length; i++) {
    if (fruits[i] == "Apple")
        fruits[i] = "Green Apple";
}

Using LINQ Select (returns new array)

int[] doubled = numbers.Select(n => n * 2).ToArray();

Note: LINQ’s Select doesn't update the original array; it creates a new one.

4. Delete Operation

Deleting items in a fixed-size array doesn't reduce the array's length. Instead, we simulate deletion by setting the value to a default, or by creating a new array.

Setting Element to Default

fruits[1] = null;

Creating New Array Without the Element


int[] original = {1, 2, 3, 4, 5};
int deleteIndex = 2;
int[] newArray = new int[original.Length - 1];

for (int i = 0, j = 0; i < original.Length; i++) {
    if (i == deleteIndex) continue;
    newArray[j++] = original[i];
}

Using LINQ to Exclude Element


int[] filtered = original.Where((val, idx) => idx != deleteIndex).ToArray();

Resizing Arrays

C# arrays are fixed in length. If you want to "resize" an array, you can use Array.Resize method, which creates a new array internally.


int[] arr = { 1, 2, 3 };
Array.Resize(ref arr, 5);

The new array now has 5 elements. The last two are initialized to default values (0).

Implementing CRUD with Methods

Create Array


int[] CreateArray(int size) {
    return new int[size];
}

Read Array


void PrintArray(int[] arr) {
    foreach (int val in arr) {
        Console.Write(val + " ");
    }
    Console.WriteLine();
}

Update Element


void UpdateElement(int[] arr, int index, int newValue) {
    if (index >= 0 && index < arr.Length)
        arr[index] = newValue;
}

Delete Element (Create New Array)


int[] DeleteElement(int[] arr, int index) {
    if (index < 0 || index >= arr.Length) return arr;

    int[] result = new int[arr.Length - 1];
    for (int i = 0, j = 0; i < arr.Length; i++) {
        if (i == index) continue;
        result[j++] = arr[i];
    }
    return result;
}

Real-World Example: CRUD on Student List


class Student {
    public string Name { get; set; }
    public int Age { get; set; }
}

Student[] students = new Student[3];
students[0] = new Student { Name = "Alice", Age = 20 };
students[1] = new Student { Name = "Bob", Age = 22 };
students[2] = new Student { Name = "Charlie", Age = 21 };

// Read
foreach (var student in students) {
    Console.WriteLine(student.Name + " - " + student.Age);
}

// Update
students[1].Age = 23;

// Delete (simulate by creating new array)
int deleteIndex = 0;
Student[] updated = new Student[students.Length - 1];
for (int i = 0, j = 0; i < students.Length; i++) {
    if (i != deleteIndex) updated[j++] = students[i];
}

Limitations of Arrays for CRUD

  • Fixed size makes deletion and insertion complex
  • Frequent resizing creates performance overhead
  • Better alternatives like List<T> exist for dynamic data

Best Practices

  • Use arrays for static, homogeneous, and performance-critical data
  • Validate indices during update/delete operations
  • Use Array.Copy and LINQ for immutability patterns
  • Consider Span<T> for slicing without copying (C# 7.2+)

Performing CRUD operations on arrays in C# requires an understanding of how arrays work internally. While the operations are conceptually simple, limitations arise due to the fixed size of arrays. Through proper use of loops, conditions, the System.Array class, and LINQ, developers can efficiently manipulate arrays even without resizing capabilities.

For dynamic data needs, collections like List<T> offer more flexibility and easier management. However, mastering CRUD on arrays builds a strong foundation for understanding how memory and data structures work in lower-level programming contexts, which is invaluable for building performant software in C#.

logo

C#

Beginner 5 Hours

CRUD Operations using Arrays in C#

Arrays are fundamental data structures in C#, offering efficient indexed storage of fixed-size, homogeneous data. CRUD stands for Create, Read, Update, and Delete – the four essential operations for managing any form of data. Although arrays in C# are fixed in size once created, understanding how to effectively perform CRUD operations with arrays is crucial to writing efficient and maintainable C# code.

Understanding Arrays in C#

Arrays are reference types in C# and are derived from the base System.Array class. They provide fast indexed access to elements and can hold primitive types (like int, double) or complex user-defined types (like class or struct).

Syntax Overview

// Declaration int[] numbers = new int[5]; // Initialization numbers[0] = 1; numbers[1] = 2; // Inline Initialization int[] primes = new int[] {2, 3, 5, 7, 11};

Now, let’s dive into each aspect of CRUD operations on arrays in C#.

1. Create Operation

Creating Arrays

The Create operation refers to initializing and allocating memory for an array. Since arrays are reference types, using the new keyword allocates memory on the heap.

string[] fruits = new string[3];

This line declares and allocates space for 3 string elements, each initialized to null.

Initialization at the Time of Declaration

int[] ages = { 21, 25, 30, 35 };

Creating Multi-Dimensional Arrays

int[,] matrix = new int[2, 3] { {1, 2, 3}, {4, 5, 6} };

Creating Jagged Arrays

int[][] jagged = new int[3][]; jagged[0] = new int[] {1, 2}; jagged[1] = new int[] {3, 4, 5}; jagged[2] = new int[] {6};

2. Read Operation

Accessing Elements

Reading array values is done through indexed access:

Console.WriteLine(fruits[0]);

Remember, array indices start from 0. Accessing an index outside the bounds throws an IndexOutOfRangeException.

Looping Through Arrays

Using For Loop

for (int i = 0; i < fruits.Length; i++) { Console.WriteLine(fruits[i]); }

Using Foreach Loop

foreach (string fruit in fruits) { Console.WriteLine(fruit); }

Using LINQ

var filtered = fruits.Where(f => f.StartsWith("A"));

Array Properties Useful for Reading

  • Length: Total number of elements
  • Rank: Number of dimensions
  • GetLength(dimension): Number of elements in the specified dimension

3. Update Operation

Updating Individual Elements

fruits[1] = "Banana";

Updates the second element in the array.

Updating with Loops

Suppose we want to double every number in an integer array:

for (int i = 0; i < numbers.Length; i++) { numbers[i] *= 2; }

Update Based on Condition

for (int i = 0; i < fruits.Length; i++) { if (fruits[i] == "Apple") fruits[i] = "Green Apple"; }

Using LINQ Select (returns new array)

int[] doubled = numbers.Select(n => n * 2).ToArray();

Note: LINQ’s Select doesn't update the original array; it creates a new one.

4. Delete Operation

Deleting items in a fixed-size array doesn't reduce the array's length. Instead, we simulate deletion by setting the value to a default, or by creating a new array.

Setting Element to Default

fruits[1] = null;

Creating New Array Without the Element

int[] original = {1, 2, 3, 4, 5}; int deleteIndex = 2; int[] newArray = new int[original.Length - 1]; for (int i = 0, j = 0; i < original.Length; i++) { if (i == deleteIndex) continue; newArray[j++] = original[i]; }

Using LINQ to Exclude Element

int[] filtered = original.Where((val, idx) => idx != deleteIndex).ToArray();

Resizing Arrays

C# arrays are fixed in length. If you want to "resize" an array, you can use Array.Resize method, which creates a new array internally.

int[] arr = { 1, 2, 3 }; Array.Resize(ref arr, 5);

The new array now has 5 elements. The last two are initialized to default values (0).

Implementing CRUD with Methods

Create Array

int[] CreateArray(int size) { return new int[size]; }

Read Array

void PrintArray(int[] arr) { foreach (int val in arr) { Console.Write(val + " "); } Console.WriteLine(); }

Update Element

void UpdateElement(int[] arr, int index, int newValue) { if (index >= 0 && index < arr.Length) arr[index] = newValue; }

Delete Element (Create New Array)

int[] DeleteElement(int[] arr, int index) { if (index < 0 || index >= arr.Length) return arr; int[] result = new int[arr.Length - 1]; for (int i = 0, j = 0; i < arr.Length; i++) { if (i == index) continue; result[j++] = arr[i]; } return result; }

Real-World Example: CRUD on Student List

class Student { public string Name { get; set; } public int Age { get; set; } } Student[] students = new Student[3]; students[0] = new Student { Name = "Alice", Age = 20 }; students[1] = new Student { Name = "Bob", Age = 22 }; students[2] = new Student { Name = "Charlie", Age = 21 }; // Read foreach (var student in students) { Console.WriteLine(student.Name + " - " + student.Age); } // Update students[1].Age = 23; // Delete (simulate by creating new array) int deleteIndex = 0; Student[] updated = new Student[students.Length - 1]; for (int i = 0, j = 0; i < students.Length; i++) { if (i != deleteIndex) updated[j++] = students[i]; }

Limitations of Arrays for CRUD

  • Fixed size makes deletion and insertion complex
  • Frequent resizing creates performance overhead
  • Better alternatives like
    List<T> exist for dynamic data

Best Practices

  • Use arrays for static, homogeneous, and performance-critical data
  • Validate indices during update/delete operations
  • Use Array.Copy and LINQ for immutability patterns
  • Consider Span<T> for slicing without copying (C# 7.2+)

Performing CRUD operations on arrays in C# requires an understanding of how arrays work internally. While the operations are conceptually simple, limitations arise due to the fixed size of arrays. Through proper use of loops, conditions, the System.Array class, and LINQ, developers can efficiently manipulate arrays even without resizing capabilities.

For dynamic data needs, collections like List<T> offer more flexibility and easier management. However, mastering CRUD on arrays builds a strong foundation for understanding how memory and data structures work in lower-level programming contexts, which is invaluable for building performant software in C#.

Related Tutorials

Frequently Asked Questions for C#

C# is much easier to learn than C++. C# is a simpler, high-level-of-abstraction language, while C++ is a low-level language with a higher learning curve.

C# outshines Python when it comes to runtime performance. As a compiled language, C# code is converted to machine code, which can be executed more efficiently by the processor. This results in faster execution times and better performance, especially in resource-intensive tasks.

Python and JavaScript programmers also earn high salaries, ranking #3 and #4 in compensation. 
C# is the highest-paid programming language but has less demand than Python, JavaScript, and Java.

No. Microsoft has invested substantially in ensuring that C# is the dominant language today, spending two billion dollars on marketing and attempting to convince developers to embrace this new platform, which is also based on the.NET foundation.

C# is primarily used on the Windows .NET framework, although it can be applied to an open source platform. This highly versatile programming language is an object-oriented programming language (OOP) and comparably new to the game, yet a reliable crowd pleaser.


You can’t be able to become Master of C# in 3 months since it has many concepts to learn and implement. NOTE: no one can become master in particular programming language. Everyday they introducing new concepts we need to get practice on it which practically somewhat tough.

C-Sharp is one of the most widely used languages for creating system backend.It's because of its incredible features, such as Windows server automation. Apart from that, it's fantastic because it runs codes quite quickly. It can also be used to create CLI applications and game creation.

Easy to learn and use: C# is simpler than Java due to its use of fewer keywords and usually shorter lines of code. Hence, it is easier to learn to code in C# compared to Java. Flexible Data Types: C# provides more flexibility in defining data types than Java.

Four steps of code compilation in C# include : 
  • Source code compilation in managed code.
  • Newly created code is clubbed with assembly code.
  • The Common Language Runtime (CLR) is loaded.
  • Assembly execution is done through CLR.

The C# language is also easy to learn because by learning a small subset of the language you can immediately start to write useful code. More advanced features can be learnt as you become more proficient, but you are not forced to learn them to get up and running. C# is very good at encapsulating complexity.


The decision to opt for C# or Node. js largely hinges on the specific requirements of your project. If you're developing a CPU-intensive, enterprise-level application where stability and comprehensive tooling are crucial, C# might be your best bet.


Among other languages, C# is gaining huge popularity for developing web-based applications. Its core concepts help build an interactive environment and provide functionalities that the dynamic web platform requires. Most aspiring full-stack developers choose this versatile language.

The C# programming language was designed by Anders Hejlsberg from Microsoft in 2000 and was later approved as an international standard by Ecma (ECMA-334) in 2002 and ISO/IEC (ISO/IEC 23270 and 20619) in 2003. Microsoft introduced C# along with .NET Framework and Visual Studio, both of which were closed-source. 

C# outshines Python when it comes to runtime performance. As a compiled language, C# code is converted to machine code, which can be executed more efficiently by the processor. This results in faster execution times and better performance, especially in resource-intensive tasks.

Yes, C# is used by many large organizations, start-ups and beginners alike. It takes some of the useful features of C and adds syntax to save time and effort. Although C# is based on C, you can learn it without any knowledge of C β€” in fact, this course is perfect for those with no coding experience at all!

C# is a very mature language that evolved significantly over the years.
The C# language is one of the top 5 most popular programming languages and .NET is the most loved software development framework in the world.
TIOBE Index predicts C# as 2023 'Language of the Year' close to overtake Java in popularity.

Generally, the C# language is not limited to the Windows operating system. In a sense, however, it is limited to Microsoft software. C# language "belongs" to Microsoft, it is developed by Microsoft and it is Microsoft that provides the runtime environment required for the operation of programs written in C#.

C# (pronounced "C sharp") is called so because the "#" symbol is often referred to as "sharp." The name was chosen by Microsoft when they developed the language. It's a play on words related to musical notation where "C#" represents the musical note C sharp.

Dennis MacAlistair Ritchie (September 9, 1941 – c. October 12, 2011) was an American computer scientist. He created the C programming language and, with long-time colleague Ken Thompson, the Unix operating system and B language.

C# is part of .NET, a free and open source development platform for building apps that run on Windows, macOS, Linux, iOS, and Android. There's an active community answering questions, producing samples, writing tutorials, authoring books, and more.


line

Copyrights © 2024 letsupdateskills All rights reserved