As others said, it means nullable, but to put it in more intuitive, less-jargony way - it’s a question mark bc you don’t know if the value is actually there or not. It could be a Singleton, but it isn’t until you check if there is a value. Whereas if you have, idk, int a no question mark, then you’re saying you actually have data.
Essentially with C# 8, they “removed” null and reused the idea of null references in creating what is essentially an Option like in other languages. You either have some data of some type, or none (a null reference, in this case). By default, everything has to be there. Then when you need null, e.g. you may not have something initialized or an operation could fail, you explicitly grab for it. Thus it reduces null pointer bugs. If you don’t need nullability, you can ensure that you don’t accidentally write in an issue. It safety checks statements and parameters.







I like Ardour. It’s got everything you need. It’s what I’ve been using for the past couple years now. It even supports VST2/VST3 plugins through WINE
I also recommend using yabridge to set up Windows plugins to work on Linux, but be warned there is risk of compatibility issues with plugins on Linux when buying new ones!
EDIT - Resources:
Wait a little while and low key Audacity 4 might release a fully capable DAW as well now that it’s adding better clip support, plugin support, non-destructive editing for some effects like compression, reverb, etc. Of course, it will be mainly for if you do a lot of recording. For electronic, Ardour would probably be better even after Audacity 4 releases.