我想知道为什么Visual Studio 2019不会抱怨这段C#代码:
dynamic deserializedBody = JsonConvert.DeserializeObject(requestBody);
deserializedBody?.date.ToString();
因为deserializedBody?.date
可能是null
,所以这意味着ToString
方法将应用于null
。我认为是这样的:
deserializedBody?.date?.ToString();
将是正确的使用形式,但Visual Studio不会抱怨第一个版本。当然,我确实缺少有关这段代码的本质的信息。
using System;
class Test
{
DateTime date = DateTime.UtcNow;
static void Main()
{
Test t = null;
// No exception thrown
Console.WriteLine(t?.date.ToString());
}
}
这里的表达式t?.date.ToString()
等效于:
t is null ? null : t.date.ToString()
(除了t
仅被评估一次)。
not等同于...这是我怀疑您期望它执行的操作。
(t is null ? null : t.date).ToString()
但是不,此可以防止不是
deserializedBody
不为空,但deserializedBody.date
为空。”>