title: How does List<SelectListItem> safely cast to SelectList in view
body: <p>I was following a question where the OP had something like this</p>
  
  <pre><code>[HttpGet]
  public  ActionResult Index() {
     var options = new List&lt;SelectListItem&gt;();
  
     options.Add(new SelectListItem { Text = "Text1", Value = "1" });
     options.Add(new SelectListItem { Text = "Text2", Value = "2" });
     options.Add(new SelectListItem { Text = "Text3", Value = "3" });
  
     ViewBag.Status = options;
  
     return View();
  }
  </code></pre>
  
  <p>And then in the view was able to do something like this </p>
  
  <pre><code>@Html.DropDownList("Status", ViewBag.Status as SelectList)
  </code></pre>
  
  <p>My expectation was that the result of the cast would be <code>null</code> and I stated as much. I was corrected that it should work and it was demonstrated via .net fiddle. To my surprise the dropdownlist was populated with the items.</p>
  
  <p>My question: How is it that when done in the view, <code>List&lt;SelectListItem&gt;</code> safely casts to <code>SelectList</code> </p>