title: VB vs C#: Why is this possible?
body: <p>Here is some code that troubles me every time I think about it.</p>
  
  <pre class="lang-vb prettyprint-override"><code>Option Strict On
  
  Module Module1
  
      Sub Main()
          For Each i As Integer In New String() {"why", "is", "this", "tolerated?"}
              ' compiles just fine.
          Next
      End Sub
  
  End Module
  </code></pre>
  
  <p>C# simply will not allow converting strings to integers implicitly.</p>
  
  <pre class="lang-cs prettyprint-override"><code>class Program {
      static void Main(string[] args) {
          foreach (int i in new string[] {"that's", "better"}) {
              // will not compile, and for good reason.
          }
      }
  }
  </code></pre>
  
  <p>Why does VB let us do that?  I'm trying to have fun with this because I'm still relatively new here, but I'm also genuinely curious.  I'm sure there are devs out there with the answer.</p>