Shawn, you did an outstanding job of clarifying this new feature. I was struggling to understand why this was done. It now make sense to me. Thanks 😊
@swildermuth
Жыл бұрын
Happy to help!
@russellf
18 күн бұрын
Came back for a refresher. A great summary, thanks! One thing I still ponder about is nullability on classes and records that are loading, e.g. config from disk etc., where you want to almost tell the compiler, “these fields are always set”. I guess this is adding ! to members but maybe there is a better way?
@swildermuth
16 күн бұрын
You can say "required" and use non-nullable - they just need to be initialized in the constructor or object syntax.
@russellf
16 күн бұрын
I completely missed the required keyword - thanks!
@hozmannew896
Жыл бұрын
you have unusual way to simplify anything in a minute, great explanation as usual, thank you so much
@imaginative-monkey
Жыл бұрын
Thanks for the video! 👍 Sometime for new projects, I add Nullable to the csproj, so the code won't compile unless I fix nullability issues. This makes me understand the concept better.
@swordblaster2596
Жыл бұрын
most important change in the last 5 years. Paying attention to this as the tools are trying to make you do, massively improves your design.
@jonb8869
4 ай бұрын
How? Can you elaborate on this?
@lasermouth
11 ай бұрын
Amazing video! The only video that cleared up for me why there's such a thing as nullable ref types. In short, it was to eliminate ambiguity by forcing an explicit declaration of intent. I also enjoyed the latter half where you went into the operators and the generic example.
@swildermuth
11 ай бұрын
Glad it helped!
@sschulze2891
Жыл бұрын
Thanks for the clear explanation on this. One thing that might be missing is that you can also get ris of the "may be null" warning by performing a null check somewhere before in the code. To me the addition of nullabel reference types possibly had the biggest impact of all newer features and i would never deactivate it on a new project now. Migrating old code can be a pain though ...
@robby-de-laet
Жыл бұрын
Well, that was a clear explanation. Thanks Shawn.
@swildermuth
Жыл бұрын
Glad it was helpful!
@sadhappy8860
6 ай бұрын
Great video, really helped me thank you. Although the word null kept going funny in my head. Haha
@TheDrewCrawford
Жыл бұрын
This information was exactly what I was looking for. Greate stuff Shawn. Thanks for sharing your knowledge.
@swildermuth
Жыл бұрын
Glad it helped
@arjanvandenberg5313
Жыл бұрын
Brilliantly explained in such a short way! Thanks a lot for your educational lessons 😊
@nalcora7389
Жыл бұрын
Extemely well done video, full and concise; have watched many video tutorials over the years both on YT, Pluralsight, etc; format is excellent.
@jedjohan
Жыл бұрын
Thanks, very good stuff. What would you say are the benefits, for developers and the applications we build. I know you did mention it in the end, but I somehow got the impression of "just do it" rather than "do it so that your code will ..."
@swildermuth
Жыл бұрын
I think the benefit is more transparency to what you expected. By specifying nullability, you're telling the developer after you what you expect. Whereas before Nullable Reference Types, I didn't have a way of saying "This will never be null".
@jedjohan
Жыл бұрын
@@swildermuth I also like that the code, when in runtime, will not (hopefully) get "null ref"-issues. Or am I misunderstanding ?
@swildermuth
Жыл бұрын
@@jedjohan That's true (harder to get null ref issues, but not impossible)
@prateektomar4874
4 ай бұрын
Nice explaination.
@swildermuth
4 ай бұрын
Glad you liked it
@onedev7316
Жыл бұрын
Nice one. Thank you
@swildermuth
Жыл бұрын
Always welcome
@enigma_dev
9 ай бұрын
Amazing video, thanks for putting it together!
@coderider3022
5 ай бұрын
I switched to using result / option / elevated types from the functional world in my c# and never looked back. Nullable and handling of them was a terrible idea for c#. I get its backward compatibility but time to evolve.
@swildermuth
5 ай бұрын
Immutability and nullability are not the same issue. But I'm glad it is working for you.
@jasonazevedo1983
11 ай бұрын
Your content is amazing.. well done! don't stop!!
@swildermuth
11 ай бұрын
Ok!
@redcrafterlppa303
Жыл бұрын
It's funny how c# is now doing the same thing java did with generics decades ago. Provide an optional "upgrade" to the new system and all old stuff is now a warning. And seeing that this "slow migration system" never completed in java we can assume that c# will have projects with nullabity and without for pretty much forever.
@a-s733
Жыл бұрын
short and clear
@swildermuth
Жыл бұрын
Glad you liked it.
@montana3426
Жыл бұрын
Thanks for great video!
@swildermuth
Жыл бұрын
My pleasure!
@kraadhithya9841
Жыл бұрын
good explanation
@swildermuth
Жыл бұрын
Thanks and welcome
@semuhphor
Жыл бұрын
Cool channel. Thanks. I have been uneducated about how this feature works. Now I ain't. :D
@torrex4
Жыл бұрын
when I scaffold the database using EF Core I get a lot of warnings about nullable
@swildermuth
Жыл бұрын
The scaffolding hasn't caught up with it. I don't have a good solution (adding the "#nullable disable" on every file isn't scalable really).
@swildermuth
Жыл бұрын
What version of .NET Core are you using? You might need to get the latest version of EF Tools. It is handling the null-ness in my recent projects.
@torrex4
Жыл бұрын
@@swildermuth I am using .NET 7 and the dotnet-ef is 7.0.2 but in .NET 6 I also had the same warnings, I tried NullableReferenceTypes but not working in my case I can send more info if needed
@georgepagotelis
Жыл бұрын
At 3:00 - "int? x = default" - the value is not 0 but null! (I was testing code as you were displaying it) Which brings me to my next question, why isn't it clear by the compiler what "default" value is!
@swildermuth
Жыл бұрын
Null isn't the default for anything. Default for value types are typically 0 for numeric types.
@redcrafterlppa303
Жыл бұрын
9:25 In fact the code: var len = user.Name?.Length; len is of type int? var len = user.Name!.Length; len is of type int
@tecTitus
10 ай бұрын
in short. "nullable reference types" enabled makes reference types into "value types". the name "nullable reference types" is quite bad, defeats it's own purpose. They should have called it "non-nullable reference types"
@SasanSalem
Жыл бұрын
Great explanation
@swildermuth
Жыл бұрын
Glad you liked it.
@MohammadKomaei
Жыл бұрын
How to create project by n new instead of dotnet new? when I use it I get error: n : The term 'n' is not recognized as the name of a cmdlet
@swildermuth
Жыл бұрын
Sorry, it is "dotnet new" - I just have a batch file that redirects to dotnet so I only have to type "n"
@allanhouston22
3 ай бұрын
C# is a Frankenstein language for a long time. Now this nullable stupity is made so that the code is easily read and used by the AI... I hate it
@swildermuth
3 ай бұрын
Not sure how AI plays into it. But you're able to not use nullable reference types. There seems to be a separation into two dialects of the language over the years. C# 13 is the maturation of including more functional ideas, but it's all opt-in. You don't have to use it if it's not serving your needs.
@user-mw4yp3jm1v
Жыл бұрын
This feature adds unnecessary complexity to the c# language.
Пікірлер: 56