C# Keywords

Switch View :
ScriptFree
Visual Studio 2010 - Visual C#
C# Keywords

Keywords are predefined, reserved identifiers that have special meanings to the compiler. They cannot be used as identifiers in your program unless they include @ as a prefix. For example, @if is a valid identifier but if is not because if is a keyword.

The first table in this topic lists keywords that are reserved identifiers in any part of a C# program. The second table in this topic lists the contextual keywords in C#. Contextual keywords have special meaning only in a limited program context and can be used as identifiers outside that context. Generally, as new keywords are added to the C# language, they are added as contextual keywords in order to avoid breaking programs written in earlier versions.

Contextual Keywords

A contextual keyword is used to provide a specific meaning in the code, but it is not a reserved word in C#. Some contextual keywords, such as partial and where, have special meanings in two or more contexts.

See Also

Concepts

Other Resources

Community Content

SJ at MSFT
More info on "in"
in actually has two uses:
  1. In a "foreach, in" statement - http://msdn.microsoft.com/en-us/library/ttw7t8t6.aspx
  2. As a "generic modifier" - http://msdn.microsoft.com/en-us/library/dd469484.aspx

Edit by SJ at MSFT: That's why there are two entries for "in" in the table. Or am I missing your point?


Nevin Janzen
The infamous "undocumented keywords"
No doubt someone will ask about the infamous __arglist, __makeref, __reftype, and __refvalue keywords. They are not supported (they are designed (a) for use within the .NET Framework itself and (b) for interoperability with C++/CLI), and that is why they are not listed on this page.

See http://www.eggheadcafe.com/articles/20030114.asp for information about these keywords.


Nevin Janzen
Reply
Yes, but what use are these to the C# programmer day to day? If they are only for compliance with C++/CLI then why should they be listed on this page? Plus, these are not essential to the average C# programmer and beginners will find this confusing.