title: Code Verification done by CLR in .NET
body: <p>I am reading CLR via C# and as part of IL and Verification section the following is mentioned.</p>
  
  <blockquote>
    <p>"While compiling IL into native instructions, the CLR performs a
    process called Verification. Verificaiton examines the high level IL
    Code and ensures that everything the code does is safe. For example,
    verification checks that every method is called with the correct
    number of parameters, that each parameter passed to every method is of
    the correct type....."</p>
  </blockquote>
  
  <p>My Questions are the below:</p>
  
  <blockquote>
    <ol>
    <li>The C# compiler itself checks that the functions are passed with the correct number and type of parameters. Then what does this
    verification mean.</li>
    <li>Does this mean the runtime type identification of objects is done as part of this process, specifically the is/as cast operations.</li>
    </ol>
  </blockquote>
  
  <p>Can anyone throw light into this.</p>