title: NullReferenceException vs ArgumentNullException
body: <p>I was reading <a href="https://stackoverflow.com/a/368759/3229805">this post</a> where the answerer mentioned he prefered <code>ArgumentNullException</code> over <code>NullReferenceException</code>.</p>
  
  <p><a href="https://msdn.microsoft.com/en-us/library/system.nullreferenceexception(v=vs.110).aspx" rel="nofollow noreferrer">MSDN</a> mention that for <code>NullReferenceException</code>:</p>
  
  <blockquote>
    <p>The exception that is thrown when there is an attempt to dereference a null object reference.</p>
  </blockquote>
  
  <p>On <code>ArgumentNullException</code> <a href="https://msdn.microsoft.com/fr-fr/library/system.argumentnullexception(v=vs.110).aspx" rel="nofollow noreferrer">they</a> say:</p>
  
  <blockquote>
    <p>The exception that is thrown when a null reference (Nothing in Visual Basic) is passed to a method that does not accept it as a valid argument.</p>
  </blockquote>
  
  <p>The answerer seems to say that you can use either.</p>
  
  <p>Is there any reason or any case where I should choose one over the other?</p>
  
  <p><em>P.S.</em></p>
  
  <p>I know this question could be opinion based. <strong>I want fact, context and situation.</strong> I am not interested by personnal preference.</p>