title: How to use the `record` as a type name and resolve the ambiguity with the `record` keyword in C#?
body: <p>How to resolve the ambiguity between the <code>record</code> type name and the <code>record</code> keyword in C#?</p>
  <blockquote>
  <p>I've seen <a href="https://stackoverflow.com/questions/421257/how-do-i-use-a-c-sharp-keyword-as-a-property-name">this SO question</a> it is about 13 years ago but this option is a new feature and related more to modifiers. On that post you can't use <code>class</code> alone in context. But here you can define and use <code>record</code> every where without any prefix. you just resolve the ambiguity with single-time prefix.You can not use <code>class</code> as a property name nowhere but for <code>record</code> it is possible. Just somewhere creates ambiguity.
  <a href="https://stackoverflow.com/questions/91817/whats-the-use-meaning-of-the-character-in-variable-names-in-c">What's the use/meaning of the @ character in variable names in C#?</a>
  <a href="https://stackoverflow.com/questions/11851540/c-sharp-operator-not-for-string-literals">C# @ operator (not for string literals) </a>
  <a href="https://stackoverflow.com/questions/33418227/prefix-for-identifiers-in-c-sharp">@ prefix for identifiers in C#</a>
  These SO posts are all about adding <code>@</code> before a keyword. You can not use that keyword alone(without <code>@</code>) as a variable. But this new C# feature is for resolving ambiguity. You have not to use <code>@</code> every where, but just at ambiguous situations.</p>
  </blockquote>
  <p>Example for the difference:</p>
  <pre><code>        var @int = 3;
          int= 5;    //error❌
  
          var @record = 5;
          record = 5;//OK✅
  </code></pre>
  <p>Question example:</p>
  <pre><code>class record
  {
      public record()
      {
  
      }
  
      record Name()             //ambiguity record type name with record keyword
      {
          return new record(); //Compile time error
      }
  }
  </code></pre>