title: How can I avoid boxing when pass a struct value as an interface value?
body: <p>Interface (I) is a reference type, struct (S) is a value type. Structs can implement interfaces.</p>
  
  <pre><code>public interface I {}
  struct S: I {}
  </code></pre>
  
  <p>Assume there is a value of S which is passed to a method as an argument of I. In this case it has to be boxed. </p>
  
  <pre><code>void Method(I i) {}
  
  void Test() {
     var s = new S();
     this.Method(s); // &lt;---- boxing!
  }
  </code></pre>
  
  <p>Is there a way to avoid boxing in this case?</p>