title: Conditional attribute on a virtual function
body: <p>I'm wondering why when you put a System.Diagnostics.Conditional("DEBUG") attribute on the a virtual method in a base class that you don't get compiler errors on derived classes that override that same virtual method but don't have the conditional attribute when the condition isn't met.  Example:</p>
  
  <pre><code>public class MyBaseClass  
  {  
      [System.Diagnostics.Conditional("DEBUG")]  
      public virtual void Test()  
      {
          //Do something  
      }  
  }  
  
  public class MyDerivedClass : MyBaseClass
  {
      public override void Test()
      {
          //Do something different
      }
  }
  </code></pre>
  
  <p>It seems that when DEBUG is not defined, the conditional would essentially make a sitation where the override method can't exist because there is no virtual function in the actual IL output.  Yet in my testing, the compiler seems to generate the code just fine either way.  Does the conditional just throw out the IL for the function body but not make any real changes to the class signature?</p>