Skip to main content

Command Palette

Search for a command to run...

10 Advanced C# Snippets Developer Productivity

Updated
2 min read
T

I am a dedicated software engineer with a deep passion for security and a commitment to developing robust and scalable solutions. With over three years of hands-on experience in the .NET ecosystem, I have built, maintained, and optimized various software applications, demonstrating my ability to adapt to diverse project needs. In addition to my expertise in .NET, I have six months of specialized experience working with Spring Boot and ReactJS, further broadening my skill set to include full-stack development and modern web technologies. My professional journey includes deploying small to medium-sized systems to cloud platforms and on-premises environments, where I have ensured reliability, scalability, and efficient resource utilization. This combination of skills and experience reflects my versatility and commitment to staying at the forefront of the ever-evolving tech landscape.

1. Pattern Matching with switch Expressions

public string GetUserType(User user) =>
    user switch
    {
        { IsAdmin: true } => "Admin",
        { IsPremium: true } => "Premium",
        _ => "Regular"
    };

2. Span<T> for Memory-efficient Data Manipulation

Span<int> numbers = stackalloc int[] { 1, 2, 3, 4, 5 };
for (int i = 0; i < numbers.Length; i++)
{
    Console.WriteLine(numbers[i]);
}

3. Local functions for Better Code Structure

public void ProcessData()
{
    Validate();

    void Validate()
    {
        // Validation logic
    }
}

4. Async Stream with IAsyncEnumerable<T>

Efficiently handle large data streams asynchronously

public async IAsyncEnumerable<int> GetNumbersAsync()
{
    for (int i = 0; i < 10; i++)
    {
        await Task.Delay(100); // Simulate async work
        yield return i;
    }
}

5. Records for Immutable Data Structure

public record User(string Name, int Age);

6. Task.WhenAll() for Parallel Async Operations

public async Task ProcessDataAsync()
{
    var tasks = new List<Task>
    {
        Task1(),
        Task2(),
        Task3()
    };

    await Task.WhenAll(tasks);
}

7. Nullable Reference Types

public void ProcessUser(User? user)
{
    if (user is not null)
    {
        Console.WriteLine(user.Name);
    }
}

8. Parallel.ForEach for Multithreading

Parallel.ForEach(dataList, data =>
{
    ProcessData(data);
});

9. Dependency Injection in ASP.NET Core

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddScoped<IMyService, MyService>();
    }
}

10. Expression Trees for Dynamic Code Generation

var param = Expression.Parameter(typeof(int), "x");
var body = Expression.Multiply(param, Expression.Constant(2));
var lambda = Expression.Lambda<Func<int, int>>(body, param).Compile();
Console.WriteLine(lambda(5)); // Outputs: 10
8 views

More from this blog

Tuan Do's Blog

37 posts

The blog acts like a personal notebook for jotting down thoughts