title: What does a question mark mean in C# code?
body: <p>I've seen code like the following unrelated lines:</p>
  <pre><code> Console.Write(myObject?.ToString());
   return isTrue ? &quot;Valid&quot; : &quot;Lie&quot;;
   return myObject ?? yourObject;
   int? universalAnswer = 42;
  </code></pre>
  <p>There seems to be more in C#8+ like</p>
  <pre><code> public static Delegate? Combine(params Delegate?[]? delegates)...
   string? value = &quot;bob&quot;;
  </code></pre>
  <p>Are all of the usages of the question mark related or different? What do each of them mean?</p>