Keywords are the character string tokens used to define the C# language. Keywords cannot be used as variable names or any other form of identifier, unless prefaced with the @ character. All C# keywords consist entirely of lowercase letters. (.NET type names, however, use
Pascal casing.)
Microsoft has a list of all of the keywords at a web page called C# Keywords.
Contextual keywords are identifiers that act as keywords only in certain language constructs. In those positions, they have particular meanings; but unlike keywords, which cannot ever be used as identifiers, contextual keywords can be used as identifiers in other parts of the code.