šŸŒ€ Dealing with Nothing in C# - Nullable

https://blog.botond.online/posts/csharp-nullable/

Another one of my C# articles, this time about Nullable.

6 points · 5 comments · view on lemmy.world

5 Comments

porgamrer@lemmy.world · 2 pts · 3y (1 reply)

I've found C# nullable types quite frustrating, because nullable generics don't work properly when they can be instantiated with both value types and reference types.

It feels like a very hacky approximation of an option type, which we are now probably stuck with. Compared to all the other amazing features they've added, that one felt a bit half baked.

sisyphean@programming.dev · 2 pts · 3y

To be honest I feel the same way about it now.

CatPoop@lemmy.world · 2 pts · 3y (1 reply)

I really like nullable types, they can be very effective for writing safer code.

Sometimes there are good reasons to separate object construction and initialization (e.g. composite / loosely coupled objects, or encapsulation of 3rd party libraries) so there can be properties/fields that do not yet have valid values, and using separate queries for this is error prone.

I write a lot of communication interfaces for sensors/actuators and if the communication drops, nullables are a good way to represent invalid readings.

Being able to convey the value and validity in one variable can be more thread-safe and easier to write pure-functions, and show intent.

I occasionally use a nullable for singleton patterns if I’m not 100% convinced there can never be multiple instances, rather than painting myself into a corner with a static class. e.g.

public static MyClass Instance => _instance ??= new();
private static MyClass? _instance; 
DrDeadCrash@programming.dev · 1 pts · 3y

Those who are trying to avoid milk should consider using Lazy<MyClass> _instance;