title: Why can't I use the as keyword for a struct?
body: <p>I defined the following struct:</p>
  
  <pre><code>public struct Call
  {
      public SourceFile caller;
      public SourceFile callee;
  
      public Call(SourceFile caller, SourceFile callee)
      {
          this.caller = caller;
          this.callee = callee;
      }
  }
  </code></pre>
  
  <p>Later, I assign it to the Tag property of another object:</p>
  
  <pre><code>line.Tag = new Call(sf1, sf2);
  </code></pre>
  
  <p>But when I try to retrieve the Tag property like so,</p>
  
  <pre><code>Call call = line.Tag as Call;
  </code></pre>
  
  <p>Visual Studio gives the following compile-time error:</p>
  
  <blockquote>
    <p>The operator as must be used within a
    reference type or nullable type</p>
  </blockquote>
  
  <p>What is the meaning of that? And how can I solve it?</p>