Let me translate the p?.Name ?? "value cannot be null" for you:
p?.Name translated as below:
if (p == null)
{
return null;
}
else
{
return p.Name;
}
if the return result is null, the p?.Name ?? "value cannot be null" expression with return "value cannot be null".
So, sum up, the below code maybe help you for understanding:
if (p == null || (p != null && p.Name == null))
{
return "value cannot be null";
}
else
{
return p.Name;
}
If right, please Accept.
Enjoy Programming!!!