Reputation: 5324
The null conditional operator can be used to skip method calls on a null target. Would the method arguments be evaluated or not in that case?
For example:
myObject?.DoSomething(GetFromNetwork());
Is GetFromNetwork
called when myObject
is null
?
Upvotes: 7
Views: 570
Reputation: 13684
myObject?.Method();
is basically equivalent to
var temp = myObject;
if (temp != null) {
temp.Method();
}
You see that no argument can be evaluated if myObject
is null
.
Note that if you replaced myObject
by
Upvotes: 0
Reputation: 5324
They will not be evaluated.
class C
{
public void Method(int x)
{
Console.WriteLine("Method");
}
}
static int GetSomeValue()
{
Console.WriteLine("GetSomeValue");
return 0;
}
C c = null;
c?.Method(GetSomeValue());
This does not print anything. Resharper marks the evaluation of GetSomeValue()
as dead code:
Upvotes: 10