<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/tags/c%23/best-of/2023" -->

---
title: Best C# posts of 2023 | daily.dev
description: The most upvoted C# posts of 2023, curated by the daily.dev community.
canonical: https://daily.dev/tags/c%23/best-of/2023
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:url: https://daily.dev/tags/c%23/best-of/2023
og:type: website
og:site_name: daily.dev
og:title: Best C# posts of 2023 | daily.dev
og:description: The most upvoted C# posts of 2023, curated by the daily.dev community.
og:image: https://media.daily.dev/image/upload/s--VAY5ToZt--/f_auto/v1724209435/public/daily.dev%20-%20open%20graph
---

# Best of C# — 2023

1. 1  
[](/posts/practical-tutorials-project-based-learning-curated-list-of-project-based-tutorials-sul756d7d "practical-tutorials/project-based-learning: Curated list of project-based tutorials")  
Article  
![Avatar of community](https://media.daily.dev/image/upload/t_logo,f_auto/v1655817725/logos/community)Community Picks · 4y  
practical-tutorials/project-based-learning: Curated list of project-based tutorials  
A curated list of project-based tutorials for aspiring software developers, covering various programming languages.  
86  
4
2. 2  
[](/posts/what-s-new-in-net-8--wvgwgoz4y "What's new in .NET 8?")  
Article  
![Avatar of community](https://media.daily.dev/image/upload/t_logo,f_auto/v1655817725/logos/community)Community Picks · 3y  
What's new in .NET 8?  
Explore the new features and enhancements in .NET 8, including C# 12, performance improvements, Native AOT, new types for improving performance, and NuGet audit for package security.  
75  
2
3. 3  
[](/posts/c-vs-rust-vs-go-a-performance-benchmarking-in-kubernetes-u1iylw4n7 "C# vs Rust vs Go. A performance benchmarking in Kubernetes")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 4y  
C# vs Rust vs Go. A performance benchmarking in Kubernetes  
A performance benchmarking article comparing the performance of Rust, C#, and Go in creating high-performance web APIs and deploying them to a Kubernetes cluster. The article also discusses how to monitor the resource usage of these APIs with performance monitoring tools.  
75  
4
4. 4  
[](/posts/stop-using-if-else-if-else-in-your-code-code-cop-005-nmon6at3n ""Stop Using if else if else In Your Code!" | Code Cop #005")  
Article  
![Avatar of discdot](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/ffa4f4ad5e0b4f9096da7a3943bd5ff2)Discover .NET · 3y  
"Stop Using if else if else In Your Code!" | Code Cop #005  
74  
8
5. 5  
[](/posts/learn-advanced-c-concepts-z1zakyukf "Learn Advanced C# Concepts")  
Article  
![Avatar of freecodecamp](https://media.daily.dev/image/upload/t_logo,f_auto/v1628412854/logos/freecodecamp)freeCodeCamp · 3y  
Learn Advanced C# Concepts  
C# is a powerful language that has continued to evolve and transform the landscape of software development. We just published an advanced C# course on the freeCodeCamp.org YouTube channel (15-hour watch) The course curriculum is structured to ensure a seamless learning experience, as it covers an array of sophisticated C# topics.  
48
6. 6  
[](/posts/interfaces-vs-abstract-classes-jaqd9fvyp "Interfaces vs Abstract Classes")  
Article  
![Avatar of discdot](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/ffa4f4ad5e0b4f9096da7a3943bd5ff2)Discover .NET · 3y  
Interfaces vs Abstract Classes  
43
7. 7  
[](/posts/earn-a-free-c-certification-from-microsoft-and-freecodecamp-0mmfnuntz "Earn a Free C# Certification from Microsoft and freeCodeCamp")  
Article  
![Avatar of freecodecamp](https://media.daily.dev/image/upload/t_logo,f_auto/v1628412854/logos/freecodecamp)freeCodeCamp · 3y  
Earn a Free C# Certification from Microsoft and freeCodeCamp  
Microsoft and freeCodeCamp have teamed up to bring you a new free professional certification: the Foundational C# Certification. This professional certification includes 35 hours of training from Microsoft and an online certification exam. By the end of this process, you'll have earned your own verified certification that you can add to your Résumé, LinkedIn, or CV.  
42  
1
8. 8  
[](/posts/22-c-best-practices-iai6y31gq "22 C# Best Practices")  
Article  
![Avatar of codemaze](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/5004eb44be854b11bc10517031b0ad88)Code Maze · 3y  
22 C# Best Practices  
Learn about C# best practices for readability and code structure, exception handling and defensive coding, and code quality and performance enhancements.  
41
9. 9  
[](/posts/react-js-application-structure---best-practices-uj1bbqi1n "React.js Application Structure - Best Practices")  
Article  
![Avatar of dnetcurry](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/dnetcurry)DotNetCurry · 3y  
React.js Application Structure - Best Practices  
A well-structured application helps you maintain the codebase, onboard new developers, and easily scale the project. In this article, we will discuss various approaches to structuring your React.js application. There are several ways to organize the files and components in a React application. These approaches can be categorized into three main types.  
37  
1
10. 10  
[](/posts/c-c-sharp-crud-rest-api-using-net-7-asp-net-entity-framework-postgres-docker-and-docker-com-pteij3xvv "C# (C Sharp) CRUD Rest API using .NET 7, ASP.NET, Entity Framework, Postgres, Docker, and Docker Compose")  
Article  
![Avatar of community](https://media.daily.dev/image/upload/t_logo,f_auto/v1655817725/logos/community)Community Picks · 3y  
C# (C Sharp) CRUD Rest API using .NET 7, ASP.NET, Entity Framework, Postgres, Docker, and Docker Compose  
Learn how to create a CRUD Rest API using C# (C Sharp), .NET 7, ASP.NET, Entity Framework, Postgres, Docker, and Docker Compose.  
30  
2
11. 11  
[](/posts/ep-38-how-to-use-guard-clauses-in-c--9aaidylcs "EP 38 : How to use Guard Clauses in C#")  
Article  
![Avatar of mwaseemzakir](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/a10ec420048a48bf86f6889f2de88180)Waseem .NET Newsletter · 3y  
EP 38 : How to use Guard Clauses in C#  
This article discusses guard clauses in C#, including what they are, how to implement them in .NET, and how they differ from validation.  
29
12. 12  
[](/posts/writing-c-in-vs-code-is-finally-awesome--qryklfqgz "Writing C# in VS Code Is Finally Awesome!")  
Article  
![Avatar of discdot](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/ffa4f4ad5e0b4f9096da7a3943bd5ff2)Discover .NET · 3y  
Writing C# in VS Code Is Finally Awesome!  
26  
1
13. 13  
[](/posts/c-c-sharp-crud-rest-api-using-net-7-asp-net-entity-framework-postgres-docker-and-docker-comp-ike4abkvf "C# (C Sharp) CRUD Rest API using .NET 7, ASP.NET, Entity Framework, Postgres, Docker and Docker Compose")  
Article  
![Avatar of community](https://media.daily.dev/image/upload/t_logo,f_auto/v1655817725/logos/community)Community Picks · 3y  
C# (C Sharp) CRUD Rest API using .NET 7, ASP.NET, Entity Framework, Postgres, Docker and Docker Compose  
Learn how to create a CRUD Rest API in C# using .NET 7, ASP.NET, Entity Framework, Postgres, Docker, and Docker Compose.  
25
14. 14  
[](/posts/net-8-and-c-12-overview-owxw1i49n ".NET 8 and C# 12–Overview")  
Article  
![Avatar of bartwullems](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/52b68c70636d44f0901ae7cd107c9438)The Art of Simplicity · 3y  
.NET 8 and C# 12–Overview  
DevToys is an offline Windows app that offers help with a large list of coding tasks. It provides a fully offline experience and supports tasks such as converters, parsers, formatters, generators, validators, and more.  
22
15. 15  
[](/posts/what-s-new-in-c-12-overview-w4a58utc0 "What's new in C# 12: overview")  
Article  
![Avatar of community](https://media.daily.dev/image/upload/t_logo,f_auto/v1655817725/logos/community)Community Picks · 3y  
What's new in C# 12: overview  
C# 12 introduces several new features including primary constructors, terse syntax for collections, anonymous function parameters by default, alias for any type, the nameof refinement, inline arrays, and code interception.  
22
16. 16  
[](/posts/visual-studio-code-june-2023-tmfnuiysv "Visual Studio Code June 2023")  
Article  
![Avatar of vscode](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/d5adab6ae9fb44d19859748fc30f5e18)Visual Studio Code · 3y  
Visual Studio Code June 2023  
Visual Studio Code June 2023 (version 1.80) Download the nightly Insiders build and try the latest updates as soon as they are available. There are many updates in this version that we hope you'll like, some of the key highlights include better screen reader support, Copilot audio cues.  
19
17. 17  
[](/posts/struct-vs-record-vs-class-in-c--cskomyccm "Struct vs. Record vs. Class in C#")  
Article  
![Avatar of syncfusion](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/064efc4834bd43b987bcda02e8ad6709)Syncfusion · 3y  
Struct vs. Record vs. Class in C#  
C# is an object-oriented programming language developed and maintained by Microsoft that is being used to create desktop, web, and mobile apps. Struct, class, and record are three user-defined data types that differ from one another.  
19
18. 18  
[](/posts/understanding-the-unit-of-work-pattern-in-c--bbar4r7rz "Understanding the Unit of Work Pattern in C#")  
Article  
![Avatar of codemaze](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/5004eb44be854b11bc10517031b0ad88)Code Maze · 3y  
Understanding the Unit of Work Pattern in C#  
The unit of work pattern is a design pattern that separates the responsibility of managing transactions from the repositories in a data access layer. It allows multiple database operations to be grouped together as a single unit of work, ensuring data consistency. The advantages of using this pattern include abstraction, improved data consistency, and better performance. The unit of work pattern can be implemented with different ORM frameworks such as Entity Framework Core and Dapper.  
18
19. 19  
[](/posts/an-introduction-to-blazor-2oitqc1kd "An Introduction to Blazor")  
Article  
![Avatar of asayer](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/be8d9d38650943c8a1718ba79f23e9ac)asayer · 3y  
An Introduction to Blazor  
Blazor is a cutting-edge web framework created by Microsoft. The term ‘Blazor’ is a fusion of ‘Browser’ and ‘Razor,’ the latter being a syntax within ASP.NET that facilitates the generation of dynamic web elements.  
18  
1
20. 20  
[](/posts/announcing-c-12-yr4irhfai "Announcing C# 12")  
Article  
![Avatar of dotnet](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/f23eb59371bd4f07aeef64c4eef73266).NET Blog · 3y  
Announcing C# 12  
C# 12 is now available and brings better developer productivity with simplified syntax and faster execution. The new features include collection expressions, primary constructors for all classes and structs, aliasing any type, and default parameters for lambda expressions. These features simplify code and improve performance. The article also mentions experimental features like the experimental attribute and interceptors.  
17
21. 21  
[](/posts/event-driven-architecture-in-c--tot2xus0o "Event-Driven Architecture in C#")  
Article  
![Avatar of codemaze](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/5004eb44be854b11bc10517031b0ad88)Code Maze · 3y  
Event-Driven Architecture in C#  
Event-driven architecture is a powerful pattern for building scalable, responsive, and loosely coupled systems. It revolves around the concept of events, which define the flow of the system. Event producers generate events, event routers decide where to send them, and event consumers react to the events. Event-driven architecture differs from request-response and pub-sub patterns. Producers in an event-driven architecture generate and send events to a messaging service like RabbitMQ or Apache Kafka.  
15  
1
22. 22  
[](/posts/the-easiest-way-to-create-pdfs-in-net-pvapmdhzu "The Easiest Way to Create PDFs in .NET")  
Article  
![Avatar of discdot](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/ffa4f4ad5e0b4f9096da7a3943bd5ff2)Discover .NET · 3y  
The Easiest Way to Create PDFs in .NET  
Learn how to easily create PDFs in .NET using the Quest PDF library. The library provides a fluent API for creating PDFs and offers a previewer for real-time customization. It is open source with licensing options available, making it a sustainable project. Pricing options for Quest PDF range from free for developers to affordable plans for companies.  
16
23. 23  
[](/posts/pulumi-vs-terraform-key-differences-and-comparison-ycsrhkhka "Pulumi vs. Terraform : Key Differences and Comparison")  
Article  
![Avatar of spacelift](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/422b4004f7b24dc988e5720eca3accfc)Spacelift · 3y  
Pulumi vs. Terraform : Key Differences and Comparison  
Terraform and Pulumi are both software tools that automate the management of cloud computing infrastructure using code and templates. Pulumi is an IaC tool that uses a declarative format to deploy infrastructure. Terraform is cloud-agnostic and allows automating infrastructure stacks from multiple cloud service providers simultaneously.  
15  
1
24. 24  
[](/posts/functional-error-handling-in-net-with-the-result-pattern-aa5hqlhm8 "Functional Error Handling in .NET With the Result Pattern")  
Article  
![Avatar of milanjovanovic](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/78d8abfb692746538410dee47f93e566)Milan Jovanović · 3y  
Functional Error Handling in .NET With the Result Pattern  
Handle errors in a functional way using the Result pattern in .NET. The Result pattern allows you to express the intent that a method could fail, encapsulate application errors, and provide a functional way to handle them. You can also document application errors using the Error class.  
13
25. 25  
[](/posts/why-do-older-net-developers-hate-modern-net--tcvar7goi "Why Do Older .NET Developers Hate Modern .NET?")  
Article  
![Avatar of discdot](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/ffa4f4ad5e0b4f9096da7a3943bd5ff2)Discover .NET · 3y  
Why Do Older .NET Developers Hate Modern .NET?  
13  
3

[See all C# archives](/tags/c%23/best-of)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@graph":[{"@type":"CollectionPage","@id":"https://daily.dev/tags/c%23/best-of/2023#page","url":"https://daily.dev/tags/c%23/best-of/2023","name":"Best C# Posts of 2023","description":"The most upvoted C# posts of 2023, curated by the daily.dev community.","isPartOf":{"@type":"WebSite","url":"https://daily.dev"}},{"@type":"ItemList","@id":"https://daily.dev/tags/c%23/best-of/2023#items","numberOfItems":25,"itemListElement":[{"@type":"ListItem","position":1,"url":"https://daily.dev/posts/practical-tutorials-project-based-learning-curated-list-of-project-based-tutorials-sul756d7d","name":"practical-tutorials/project-based-learning: Curated list of project-based tutorials"},{"@type":"ListItem","position":2,"url":"https://daily.dev/posts/what-s-new-in-net-8--wvgwgoz4y","name":"What's new in .NET 8?"},{"@type":"ListItem","position":3,"url":"https://daily.dev/posts/c-vs-rust-vs-go-a-performance-benchmarking-in-kubernetes-u1iylw4n7","name":"C# vs Rust vs Go. A performance benchmarking in Kubernetes"},{"@type":"ListItem","position":4,"url":"https://daily.dev/posts/stop-using-if-else-if-else-in-your-code-code-cop-005-nmon6at3n","name":"\"Stop Using if else if else In Your Code!\" | Code Cop #005"},{"@type":"ListItem","position":5,"url":"https://daily.dev/posts/learn-advanced-c-concepts-z1zakyukf","name":"Learn Advanced C# Concepts"},{"@type":"ListItem","position":6,"url":"https://daily.dev/posts/interfaces-vs-abstract-classes-jaqd9fvyp","name":"Interfaces vs Abstract Classes"},{"@type":"ListItem","position":7,"url":"https://daily.dev/posts/earn-a-free-c-certification-from-microsoft-and-freecodecamp-0mmfnuntz","name":"Earn a Free C# Certification from Microsoft and freeCodeCamp"},{"@type":"ListItem","position":8,"url":"https://daily.dev/posts/22-c-best-practices-iai6y31gq","name":"22 C# Best Practices"},{"@type":"ListItem","position":9,"url":"https://daily.dev/posts/react-js-application-structure---best-practices-uj1bbqi1n","name":"React.js Application Structure - Best Practices"},{"@type":"ListItem","position":10,"url":"https://daily.dev/posts/c-c-sharp-crud-rest-api-using-net-7-asp-net-entity-framework-postgres-docker-and-docker-com-pteij3xvv","name":"C# (C Sharp) CRUD Rest API using .NET 7, ASP.NET, Entity Framework, Postgres, Docker, and Docker Compose"},{"@type":"ListItem","position":11,"url":"https://daily.dev/posts/ep-38-how-to-use-guard-clauses-in-c--9aaidylcs","name":"EP 38 : How to use Guard Clauses in C#"},{"@type":"ListItem","position":12,"url":"https://daily.dev/posts/writing-c-in-vs-code-is-finally-awesome--qryklfqgz","name":"Writing C# in VS Code Is Finally Awesome!"},{"@type":"ListItem","position":13,"url":"https://daily.dev/posts/c-c-sharp-crud-rest-api-using-net-7-asp-net-entity-framework-postgres-docker-and-docker-comp-ike4abkvf","name":"C# (C Sharp) CRUD Rest API using .NET 7, ASP.NET, Entity Framework, Postgres, Docker and Docker Compose"},{"@type":"ListItem","position":14,"url":"https://daily.dev/posts/net-8-and-c-12-overview-owxw1i49n","name":".NET 8 and C# 12–Overview"},{"@type":"ListItem","position":15,"url":"https://daily.dev/posts/what-s-new-in-c-12-overview-w4a58utc0","name":"What's new in C# 12: overview"},{"@type":"ListItem","position":16,"url":"https://daily.dev/posts/visual-studio-code-june-2023-tmfnuiysv","name":"Visual Studio Code June 2023"},{"@type":"ListItem","position":17,"url":"https://daily.dev/posts/struct-vs-record-vs-class-in-c--cskomyccm","name":"Struct vs. Record vs. Class in C#"},{"@type":"ListItem","position":18,"url":"https://daily.dev/posts/understanding-the-unit-of-work-pattern-in-c--bbar4r7rz","name":"Understanding the Unit of Work Pattern in C#"},{"@type":"ListItem","position":19,"url":"https://daily.dev/posts/an-introduction-to-blazor-2oitqc1kd","name":"An Introduction to Blazor"},{"@type":"ListItem","position":20,"url":"https://daily.dev/posts/announcing-c-12-yr4irhfai","name":"Announcing C# 12"},{"@type":"ListItem","position":21,"url":"https://daily.dev/posts/event-driven-architecture-in-c--tot2xus0o","name":"Event-Driven Architecture in C#"},{"@type":"ListItem","position":22,"url":"https://daily.dev/posts/the-easiest-way-to-create-pdfs-in-net-pvapmdhzu","name":"The Easiest Way to Create PDFs in .NET"},{"@type":"ListItem","position":23,"url":"https://daily.dev/posts/pulumi-vs-terraform-key-differences-and-comparison-ycsrhkhka","name":"Pulumi vs. Terraform : Key Differences and Comparison"},{"@type":"ListItem","position":24,"url":"https://daily.dev/posts/functional-error-handling-in-net-with-the-result-pattern-aa5hqlhm8","name":"Functional Error Handling in .NET With the Result Pattern"},{"@type":"ListItem","position":25,"url":"https://daily.dev/posts/why-do-older-net-developers-hate-modern-net--tcvar7goi","name":"Why Do Older .NET Developers Hate Modern .NET?"}]},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Tags","item":"https://daily.dev/tags"},{"@type":"ListItem","position":3,"name":"C#","item":"https://daily.dev/tags/c%23"},{"@type":"ListItem","position":4,"name":"Best of","item":"https://daily.dev/tags/c%23/best-of"},{"@type":"ListItem","position":5,"name":"2023"}]}]}
```

