Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
Since C# 8.0, the standard is non nullable variable by default.
Ref1
But in case of generics like this one:
public static T PerfomIO<T>(Func<T> function, T defaultValue = default)
return function();
catch (IOException)
return defaultValue;
How to get rid of the compilation error "CS8601 Possible null reference assignement" that occur when I try to pass "default" ?
I want to support null value here. I do not want to disable the error message. I want to program it the way it should be.
I try to add Nullable in many ways without success.
I try [AllowNull] without success
–
I found a few tricks although I had no idea why the project was forced to "nullable check" (found and details below). I look in the .csproj, .sln and elsewhere and didn't find any parameter that could force the null check.
I found 2 ways to workaround the problem I had:
Solution 1: You can add the next line at the start of your .cs file:
#nullable disable
Solution 2: Change the parameter from default
to default!
where the !
tells the compiler not to consider the nullable check.
I currently use default!
.
Also just as reference, if your project forces null check but you can't find the option in your project or in your solution, then look for this article: Customize your build, perhaps you will find why the null check is forced. (All new since 2019).
In Visual Studio 2022 you can add .editorconfig
file to suppress those annoying messages (I sure hope you know what you are doing)
In the .sln
file:
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{32FE27E8-3094-4A72-8200-3A2639355EF0}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
EndProjectSection
EndProject
and .editorconfig
file content is:
[*.cs]
# CS8600: Converting null literal or possible null value to non-nullable type.
dotnet_diagnostic.CS8600.severity = none
There is a way to create this file and hook it up suing VS2022 by hovering over the issue:
I hope it will help someone 🙂
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.