This diagnostic warns you about the risk of getting 'NullReferenceException' and is triggered when a variable’s field is accessed without first testing that variable for null. The point here is that the value the variable refers to is computed using the null-conditional operator.
Consider the following example:
public int Foo (Person person)
{
string parentName = person?.Parent.ToString();
return parentName.Length;
}
When initializing the 'parentName' object, we assume that 'person' may be null. In that case, the 'ToString()' function will not be executed, and the 'parentName' variable will be assigned a null value. An attempt to read the 'Length' property from this variable will result in throwing 'NullReferenceException'.
This is what a correct version of the code above may look like:
public int Foo (Person person)
{
string parentName = person?.Parent.ToString();
return parentName?.Length ?? 0;
}
Now the function will return the string length if the 'parentName' variable does not refer to null, and 0 if it does.
This diagnostic is classified as:
You can look at examples of errors detected by the V3105 diagnostic. |