We can deconstruct tuples in C#, but does it work with other types? And assuming it does (spoiler - it does), is it worth bothering with?
What is Generic Math support in C# 11, and how do we take advantage of it? Let’s dig in and find out! (part 3 of 3)
What’s it mean to overload operators in C#? And what’s that have to do with Generic Math in C# 11? Let’s find out! (part 2 of 3)
What are static abstract members (new in C# 11), what can we do with them, and how are they related to Generic Math? (part 1 of 3)
A big challenge with any language is trying to group and organize things sensibly, and returning multiple values is no exception. Let’s check out Tuples and deconstruction, and see how they can help us out.
Sometimes the safer way to “update” old code is to leave it be and paint over it with a newer construct. Let’s see how to modernize a BackgroundWorker using Tasks and TaskCompletionSource.
Named arguments in C#.. they’ve been around a long time, but does anyone use them? Let’s check out another feature that helps tame wild code.
C# 7 introduced a new tool for the belt - local functions. Let’s take a look at what they are, how to use them, and why we might not want to.
Checking for nulls in C# is tedious, but C# 6 gave us the null-conditional operator. Let’s see what we can do with it!
The longer I write software, the more I come to appreciate clear code. String interpolation in C# is just one more way to help us do that.
There’s a lot of ways to make our code work for us. Let’s check out using the nameof operator to avoid magic strings.
Using the async/await pattern in WinForms is an easy win, helping prevent one of the most annoying user experiences - a frozen UI.
All programming languages have gotchas to trip you up, and C# is no exception. Today, let’s check out the subtle (but significant) difference between “throw” and “throw ex”.
This error might look a little cryptic at first glance, but it’s fairly descriptive in explaining what’s wrong. You’re likely to come across this one before your first cup of coffee.
Did you know most languages have a way to pass around code to other functions, so you can call (invoke) it in other parts of your application? In C#, it’s called a delegate.
Porting .NET Framework code to .NET Standard has been a learning experience, with some challenges too. This time I had a .NET Standard library that expected an application config file, but loading one from an NUnit test suite proved to be more difficult than it sounded at first.
I was upgrading some code to use string interpolation, a feature introduced in C# 6, when I ran into a small snag with DateTimes and a format string stored as a constant.
Ever thought it’d be convenient to attach metadata to your code at design time, then read it at runtime? Attributes let you do just that - to methods, classes, tests, enumerations, and more. Use reflection to read them at runtime and take some action. Here’s a few examples for the uninitiated…
It’s common to compare two objects in C# for equality, such as for a save operation. Let’s take a closer look at how we define what equal means.
We use implicit and explicit conversion in C# all the time, without even realizing it. Let’s learn more about them and look at examples of each.