title: What is the purpose of "?" in (someDelegateName)?.Invoke();?
body: <p>The following code snippet was highlighted in Visual Studio alongside a suggestion for simplifying it.</p>
  
  <pre><code>if ( drawMethodsDelegate != null )
      drawMethodsDelegate ( e.Graphics );
  </code></pre>
  
  <p>When I clicked on the lightbulb suggestion thing, Visual Studio refactored it into the following</p>
  
  <pre><code>drawMethodsDelegate?.Invoke ( e.Graphics );
  </code></pre>
  
  <p>And no. The question mark is not a typo. I don't understand what the question mark is used for and I can't find anything relevant on MSDN. I also looked at the Tutorial Point Delegates page but found no useful information.</p>
  
  <p><a href="https://www.tutorialspoint.com/csharp/csharp_delegates.htm" rel="noreferrer">Tutorial Point page</a> , <a href="https://msdn.microsoft.com/en-us/library/ms173171.aspx" rel="noreferrer">MSDN Delegates page</a> , <a href="https://msdn.microsoft.com/en-us/library/zyzhdc6b(v=vs.110).aspx" rel="noreferrer">MSDN Control.Invoke page</a></p>