C#9 (released Nov 2020) has some pattern matching enhancements. Added in C#9 (among other pattern changes) is conjunctive patterns (AND keyword), disjunctive patterns (OR keyword) and negative patterns (NOT keyword). Two examples are below. These are simple examples of course but basically you don’t have to repeat the variable name as before and the syntax … Continue reading C#9 new AND, OR, NOT pattern matching keywords
Using C# indices and range syntax to access elements in a sequence
Microsofts Indices and Ranges page provides examples of the indices and range syntax available in C# (introduced in C#8). This syntax provides a succinct way to access single elements or ranges in a sequence. The first example below shows the ‘index from the end’ operator ^, which gives us a shorthand way of getting items relative … Continue reading Using C# indices and range syntax to access elements in a sequence
Using ToLower() or ToUpper() in C# to compare strings is not safe in all cultures
If you’re using Resharper, Roslynator or similar you’ll likely see string comparisons using ToLower() or ToUpper() flagged. Why are these C# string compare methods flagged? Well these string comparisons are not safe in all cultures. The canonical example is the ‘Turkish i problem‘ which relates to how in Turkish the dot is present on the … Continue reading Using ToLower() or ToUpper() in C# to compare strings is not safe in all cultures
Don’t use the C# var keyword everywhere in your code just to be consistent
Don’t use the var keyword everywhere in your code base just to be consistent. If using var removes clarity for certain assignments its best not to use it in these cases. Example 1 below shows some usages of var in which the type is very clear from the right hand side. In these cases var … Continue reading Don’t use the C# var keyword everywhere in your code just to be consistent
Easier immutability with Init only properties in C# 9
C# 9 shipped with .NET 5 in November. One change included is init only properties which allow us to have immutable (non-changeable) classes without some of the downsides associated with pre C# 9 approaches. As can be seen below in C# 8 we’d typically have getters with no setters which gives us immutability…great.. but it … Continue reading Easier immutability with Init only properties in C# 9
C# – How to split a string
String can be split into collection of substrings based on a defined character (separator) using Split() function. Split is part of String class which exists in the System namespace. Split function is overloaded and has various forms which allow to: pass separator as a single character, array of characters, single string or array of strings; … Continue reading C# – How to split a string
C# – How to convert string to int
There are three easiest ways which allow you to convert string data type to int: Parse method TryParse method Convert class In the following article I’ll explain each one and show the example of its usage. Parse method Basic form of Parse method receives string as an input parameter and returns converted value as an … Continue reading C# – How to convert string to int
Parsing a nested value from a JSON string in .NET Core 3 without needing a DTO
.NET doesn’t use Newtonsoft by default anymore (since .NET Core 3.0). A lot of the examples online show how to use the new System.Text.Json namespace to extract values from JSON strings by deserializing the strings into full POCO classes (DTOs/ViewModels). If you only want to extract the value of a particular property and don’t want the … Continue reading Parsing a nested value from a JSON string in .NET Core 3 without needing a DTO
Generating sequential GUIDs which sort correctly in SQL Server in .net
Using a non sequential GUID in either a clustered or non clustered index is not ideal from a performance point of view as non sequential GUIDs are not ever-increasing (like an identity int) so get inserted into the middle of the index rather than the end resulting in increased logical fragmentation and decreased performance. If … Continue reading Generating sequential GUIDs which sort correctly in SQL Server in .net
C# – How to check if string contains only digits
There are plenty of methods to achieve this but even though it’s simple task you need to specify requirements like: are white spaces allowed? how to treat empty string? what’s the maximum length of the string? In this article I want to describe 3 different ideas how to solve this problem. Custom function Let’s say … Continue reading C# – How to check if string contains only digits