Palavras-chave são marcadores de caractere que definem a sintaxe da linguagem C#.
As palavras-chave são termos nativos embutidos no C# com funções exclusivas. Por isso, não é possível usá-las para nomear variáveis, funções ou outros identificadores durante a codificação, pois isso causaria ambiguidade no código. Veja o exemplo do termo int: ele representa o tipo inteiro no C#. Se você tentar declarar bool int = 12;, o compilador não conseguirá interpretar a linha, pois int é uma palavra reservada com uma finalidade especial.
Há duas regras centrais para as palavras-chave
Palavras-chave não podem ser usadas diretamente como nomes de variáveis ou outros identificadores, a única exceção é adicionar o prefixo @ antes da palavra-chave. Todas as palavras-chave padrão do C# são escritas em letras minúsculas; já os nomes de tipos nativos do .NET seguem a convenção PascalCase.
| abstract | const | extern | int | override | sizeof | typeof | |
| as | continue | false | interface | params | stackalloc | uint | |
| base | decimal | finally | internal | private | static | ulong | |
| bool | default | fixed | is | protected | string | unchecked | |
| break | delegate | float | lock | public | struct | unsafe | |
| byte | do | for | long | readonly | switch | ushort | |
| case | double | foreach | namespace | ref | this | using | |
| catch | else | goto | new | return | throw | virtual | |
| char | enum | if | null | sbyte | true | void | |
| checked | event | implicit | object | sealed | try | volatile | |
| class | explicit | in | operator | when | while |
São reservadas globalmente, não podem ser usadas diretamente para nomenclatura em nenhuma situação, é obrigatório inserir o símbolo @
int @int; // Código válido
int int; // Causa erro na compilaçãoCode language: JavaScript (javascript)
Palavras-chave contextuais
Palavras-chave contextuais (Contextual Keywords)
As palavras-chave contextuais só têm o comportamento de palavra reservada dentro de estruturas sintáticas específicas. Diferente das palavras-chave comuns, elas podem ser utilizadas diretamente como identificadores em outras partes do código.
| add | ascending | async | await | by | descending | dynamic |
| equals | from | get | global | group | in | into |
| join | let | on | orderby | partial | remove | select |
| set | value | var | where | yield |
Só atuam como reservadas em sintaxes específicas; em outros locais podem ser usadas diretamente como nomes de variáveis
int var; // Válido, var não é tratado como palavra-chave fora da inferência de tipo
var num = 10; // Aqui var funciona como palavra-chave para inferência implícita de tiposCode language: JavaScript (javascript)

Todos os termos circulados no exemplo anterior são palavras-chave.