title: Visual Basic, why Nothing?
body: <p>In school, I worked primarily with Java, C, and Python. Now that I'm working, I am working with .Net all of the time. Occasionally I have to work on Visual Basic projects which has been an enjoyable learning experience but I seem to get hung up on a few things from time to time. One of my main problems comes from the fact that Visual Basic uses <code>Nothing</code> instead of <code>null</code> as in C# and F#.</p>
  
  <p><code>Nothing</code> and <code>null</code>, to me, seem to be basically the same with the exception that a non-nullable value type can be set to <code>Nothing</code> in Visual Basic and the value will be set to its default value (i.e. 0 for an Integer). In C#, if a non-nullable value type is set to <code>null</code> there will be a compile-time error. Having the default value of data types be  but making created types <code>Nullable</code> and setting values to <code>DBNull.Value</code> for working with databases throws me off. It's not intuitive switching to <code>Nothing</code> from <code>null</code>. I looked at the IL code of setting a string to null/Nothing in both C# and VB and each time it set the string to ldnull. So is there any underlying reason as to why Visual Basic uses <code>Nothing</code> instead of <code>null</code> as other .Net languages do?</p>
  
  <p>tl;dr Why does Visual Basic use <code>Nothing</code> instead of <code>null</code>?</p>