C# Keywords
Keywords are predefined sets of reserved words that have special meaning in a program. The meaning of keywords can not be changed, neither can they be directly used as identifiers in a program.
For example,
long mobileNum;
Here, long
is a keyword and mobileNum is a variable (identifier). long
has a special meaning in C# i.e. it is used to declare variables of type long
and this function cannot be changed.
Also, keywords like long
, int
, char
, etc can not be used as identifiers. So, we cannot have something like:
long long;
C# has a total of 79 keywords. All these keywords are in lowercase. Here is a complete list of all C# keywords.
Although keywords are reserved words, they can be used as identifiers if @
is added as prefix. For example,
int @void;
The above statement will create a variable @void of type int
.
Contextual Keywords
Besides regular keywords, C# has 25 contextual keywords. Contextual keywords have specific meaning in a limited program context and can be used as identifiers outside that context. They are not reserved words in C#.
add | alias | ascending |
async | await | descending |
dynamic | from | get |
global | group | into |
join | let | orderby |
partial (type) | partial (method) | remove |
select | set | value |
var | when (filter condition) | where (generic type constraint) |
yield |
If you are interested to know the function of every keywords, I suggest you visit C# keywords (official C# docs).
C# Identifiers
Identifiers are the name given to entities such as variables, methods, classes, etc. They are tokens in a program which uniquely identify an element. For example,
int value;
Here, value
is the name of variable. Hence it is an identifier. Reserved keywords can not be used as identifiers unless @
is added as prefix. For example,
int break;
This statement will generate an error in compile time.
To learn more about variables, visit C# Variables.
Rules for Naming an Identifier
- An identifier can not be a C# keyword.
- An identifier must begin with a letter, an underscore or
@
symbol. The remaining part of identifier can contain letters, digits and underscore symbol. - Whitespaces are not allowed. Neither it can have symbols other than letter, digits and underscore.
- Identifiers are case-sensitive. So, getName, GetName and getname represents 3 different identifiers.
Here are some of the valid and invalid identifiers:
Identifiers | Remarks |
---|---|
number | Valid |
calculateMarks | Valid |
hello$ | Invalid (Contains $) |
name1 | Valid |
@if | Valid (Keyword with prefix @) |
if | Invalid (C# Keyword) |
My name | Invalid (Contains whitespace) |
_hello_hi | Valid |
Example: Find list of keywords and identifiers in a program
Just to clear the concept, let's find the list of keywords and identifiers in the program we wrote in C# Hello World.
using System;
namespace HelloWorld
{
class Hello
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
Keywords | Identifiers |
---|---|
using | System |
namespace | HelloWorld (namespace) |
class | Hello (class) |
static | Main (method) |
void | args |
string | Console |
WriteLine |
The "Hello World!" inside WriteLine
method is a string literal.