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
?
答案 0 :(得分:6)
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:
答案 1 :(得分:0)
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