title: What are some advantages & disadvantages of type inference in C#?
body: <p>I have a coworker that is against type inference in C#. I believe most of his arguments surrounded lack of readability. My argument against that is that Visual Studio's intellisense features provide a simple way of viewing types, and reading them from the code isn't as necessary as it might be if we were coding out of notepad.</p>
  
  <p>However, I am curious about the advantages and disadvantages of using type inference in C#. I come from C++ and I know that C++0x's 'auto' has a more objective benefit in that you don't always know the types you're getting (especially when doing heavy template programming). An example is using auto to store the value of Boost.Bind.</p>
  
  <p>In C#, type inference doesn't seem to be as much of a requirement so much as it is a "nice to have" or sugar-coating feature. I think it would be useful for when you are dealing with long types, e.g.:</p>
  
  <pre><code>Lazy&lt;List&lt;MyNamespace.ISomeVeryLongInterfaceType&gt;&gt; myVar = obj.GetLazy();
  </code></pre>
  
  <p>it would be:</p>
  
  <pre><code>var myVar = obj.GetLazy();
  </code></pre>
  
  <p>This is much cleaner in my opinion. However, are there any objective arguments for OR against type inference? Is it good programming practice to use it, even in situations where it is arguable that it provides no benefit (e.g., using 'var' instead of 'int')?</p>
  
  <p>Some help in understanding how I should use 'var' in my day-to-day coding would be great.</p>