4

null 条件运算符可用于跳过对 null 目标的方法调用。在这种情况下是否会评估方法参数?

例如:

myObject?.DoSomething(GetFromNetwork());

什么GetFromNetwork时候myObjectnull

4

2 回答 2

8

他们不会被评估。

class C
{
    public void Method(int x)
    {
        Console.WriteLine("Method");
    }
}

static int GetSomeValue()
{
    Console.WriteLine("GetSomeValue");
    return 0;
}

C c = null;
c?.Method(GetSomeValue());

这不会打印任何东西。Resharper 将评估标记GetSomeValue()为死代码:

在此处输入图像描述

于 2017-08-05T12:15:38.080 回答
0
myObject?.Method();

基本上相当于

var temp = myObject;
if (temp != null) {
    temp.Method();
}

myObject您会看到,如果is ,则无法评估任何参数null

请注意,如果您替换myObject

于 2017-08-05T12:21:34.793 回答