问号在C#代码中意味着什么?

我见过类似以下不相关的代码:

Console.Write(myObject?.ToString()); return isTrue ? "Valid" : "Lie"; return myObject ?? yourObject; int? universalAnswer = 42; 

问号的所有用法是相关的还是不同的? 他们每个人的意思是什么?

问号在C#中具有不同的含义,具体取决于上下文。

Null条件运算符 ( MSDN , 成员访问中的问号在C#中意味着什么? )

 Console.Write(myObject?.Items?[0].ToString()); 

条件运算符/三元运算符 ( MSDN , 使用条件?:(三元)运算符的好处 )

 return isTrue ? "Valid" : "Lie"; 

Null Coalescing Operator ( MSDN , C#中两个问号共同意味着什么? )

 return myObject ?? yourObject; 

可空类型 ( MSDN , 类型 后问号的目的是什么(例如:int?myVariable)? )

 int? universalAnswer = 42;