title: cannot convert type 'string' to 'int?' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion or null type conversion
body: <p>C# accepts the following:</p>
  
  <pre><code>object o = "hello";
  int? i = o as int?;
  
  if (i == null) {
      // o was not a boxed int
  }
  else {
      // Can use i.Value to recover the original boxed value
  }
  </code></pre>
  
  <p>But not</p>
  
  <pre><code>String o = "hello";
  int? i = o as int?;
  
  if (i == null) {
      // o was not a boxed int
  }
  else {
      // Can use i.Value to recover the original boxed value
  }
  </code></pre>
  
  <p>I'm just wondering about the behaviour of the keyword <code>as</code> in C#.</p>
  
  <p>The same as in Java this would fail:</p>
  
  <pre><code>Object test1 = "hello";
  Integer test2 = (Integer) test1;
  String test3 = "hello";
  Integer test4 = (Integer) test3; //compilation error
  </code></pre>