I am using C# 8 with .NET framework 4.8
I'm currently guarding against a potential string that can be null with IsNullOrWhitespace
(same problem with IsNullOrEmpty
) , but the compiler is still complaining :
public MyImage? LoadImage(string? filename)
{
if (string.IsNullOrWhiteSpace(filename))
{
return null;
}
return OtherMethod(filename); // here : warning from Visual Studio
}
// signature of other method :
public MyImage OtherMethod(string filepath);
currently, I have workarounds to make the compiler understand :
- use null forgiving operator
filename!
- disable warning by using
#pragma warning disable CS8604 // Possible null reference argument.
- add another check for null
if(string == null || string.IsNullOrWhitespace(filename))
But none of the seems satisfactory, mainly because I'll need to repeat the workaround for each call to IsNullOrEmpty
.
Is there any other way to tell the compiler that IsNullOrEmpty effectively guards against null ?