Category: .NET
Readonly, Immutable, and Frozen Collections in .NET
July 1, 2024 4 minutes read In modern software development, immutability is a powerful concept. The .NET Base Class Library (BCL) offers readonly, immutable, and frozen collections. This terminology might...
When to create a new .csproj?
June 24, 2024 5 minutes read Recently, a question has been raised on Reddit/r/dotnet: When should you create a new .csproj? This is a crucial consideration for every .NET team....
Top 10 C# Recent Improvements
June 3, 2024 7 minutes read Over the years, in collaboration with the community, the C# team has introduced numerous impressive new syntax features. Some of these simplify coding and...
C# Discriminated Union: What’s Driving the C# Community’s Inquiries?
May 16, 2024 6 minutes read In recent years, there has been a notable surge in inquiries from the C# community regarding language-level support for C# Discriminated Unions. What individuals...
The .NET Generic Math Library
May 15, 2024 7 minutes read In November 2022 with the release of .NET 7, new math-related generic interfaces have been added to the .NET Base Class Library (BCL). This...
C# static abstract members
May 14, 2024 5 minutes read C# 11 proposed interface members declared as static abstract. This is useful to handle both: Polymorphism at the type level, for example when abstracting...
The .NET 7.0 IParsable<TSelf> interface
May 7, 2024 3 minutes read As I explained in the post C# 11 static abstract members, C# 11 let’s write static abstract members in an interface. This feature was...
Covariance and Contravariance in C# Explained
May 2, 2024 6 minutes read Introduction Covariance and contravariance allow more flexibility when dealing with C# class hierarchy. This article explains and demonstrates the concepts of Covariance and Contravariance...
In the Jungle of .NET Obfuscator Tools
April 26, 2024 7 minutes read In this article, I will explain our genuine experience with various .NET Obfuscator Tools. We end up explaining that .NET Reactor is the one...
C# 12 New Features
April 26, 2024 5 minutes read C# 12 along with .NET 8 has been officially released in November 2023. Let’s explore C# 12 New Features in this post. Primary Constructors...
.NET 8 Top 10 New Features
April 24, 2024 7 minutes read .NET 8 has been officially released in November 2023. You can download it here. Designated as an LTS (Long Term Support) version, it guarantees...
Will Visual Studio Be Migrated to .NET Core and Become Multi-Platform?
April 22, 2024 7 minutes read I came across comments on a recent Reddit post and thought it would be intriguing to analyze the DLLs of Visual Studio 2022 (version...
Improve Visual Studio Build Performance
August 11, 2023 7 minutes read Time is your most precious asset and slow build is high in the list of developer’s productivity killers. With slow build the penalty is...
Improved .NET Debugging Experience with Source Link
June 20, 2023 3 minutes read Source Link is a Microsoft technology that lets .NET developers debug the source code of NuGet packages referenced by their applications. I underlined source...
.NET Micro-Optimization and Refactoring Trick
May 31, 2023 3 minutes read Recently, I made an interesting observation regarding Dictionary<string,T>: the method TryGetValue() is faster when building with new Dictionary<string,T>(StringComparer.Ordinal). This performance difference can be attributed...
C#12 class and struct Primary Constructors
April 13, 2023 3 minutes read Since C#9 we have the convenient primary constructor syntax for class record (or just record) and struct record: [crayon-68d9e74bdd89c261607721/] C#12 introduces primary constructor for...
C# 11 required members
November 15, 2022 3 minutes read C# 11 proposes the new keyword required that can apply to an instance property or an instance field declaration within a class, a record...
C# 11 File Scoped Types
October 27, 2022 4 minutes read C#11 added the file scoped types feature: a new file modifier that can be applied to any type definition to restrict its usage to...
Managed pointers, Span, ref struct, C#11 ref fields and the scoped keyword
October 25, 2022 9 minutes read The concept of managed pointer exists in the NET runtime and C# since the inception of the platform in the early 2000. Managed pointers...
WPF / Winforms UI Refactoring: A Case Study
May 11, 2022 4 minutes read WPF and Winforms are still so massively used that Microsoft fully supports those technologies in .NET Core, .NET 5, 6 , 7 and so...
How to collect return values from Parallel.ForEach?
January 26, 2022 1 minutes read Today I took 10 minutes to answer the 9 years old stackoverflow’s question: How do I collect return values from Parallel.ForEach? I though the...
C# Binary Search: Fast find of a free slot between 0 and uint.MaxValue
January 3, 2022 2 minutes read When a user is exporting a result to a document with NDepend, the tool needs to find a file name not taken in the...
Solution to Visual Studio 2022 messing up Visual Studio 2019
November 10, 2021 3 minutes read As all .NET developers I am quite excited by Visual Studio 2022 and .NET 6 going RTM. However I noticed that Visual Studio 2022...
5x Lessons Learned from Migrating a Large Legacy to .NET Core
October 26, 2021 9 minutes read In January 2020 I wrote the post Not planning now to migrate your .NET 4.8 legacy, is certainly a mistake. Hopefully we followed our...
Debugging a .NET App on Linux from Windows Visual Studio with WSL
September 15, 2021 6 minutes read NDepend analysis, reporting, API and Power-Tools will run on Linux and MacOS with the next version 2021.2. To achieve that, a major refactoring session...
Code Testability: A Case Study
September 1, 2021 2 minutes read [crayon-68d9e74bdeb7c140110284/] This method is untestable because its logic depends on NdpOperatingSystem.Kind which returns an OSPlatform object. Notice the usage of the attribute UncoverableByTest that...
3 productivity Resharper features missing in Visual Studio
August 10, 2021 5 minutes read Resharper is a great Visual Studio productivity extension but on the other hand it slows down significantly the IDE, especially when working with large...
Top 10 New .NET 6.0 API
July 7, 2021 5 minutes read .NET 6 introduces new handy APIs that will make our development journey easier. Let’s go through the top 10 new API in terms of...
How to Logically Name Embedded Resources in .csproj?
June 16, 2021 1 minutes read You can work with .NET for two decades and still discover some useful stuff. One thing that bothered me till now is that an...
Migrating Delegate.BeginInvoke Calls to .NET Core, .NET 5 and .NET 6
May 26, 2021 3 minutes read In this 2019 post, the .NET Base Class Library engineers announced that the good old Delegate.BeginInvoke .NET Framework syntax wasn’t supported in .NET Core...