Skip to content

Latest commit

 

History

History
171 lines (163 loc) · 7.86 KB

File metadata and controls

171 lines (163 loc) · 7.86 KB
description title ms.date f1_keywords helpviewer_keywords ms.custom
C# Keywords
C# Keywords
09/15/2022
cs.keywords
keywords [C#]
C# language, keywords
Visual C#, keywords
@ keyword
updateeachrelease

C# Keywords

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

The first table in this article lists keywords that are reserved identifiers in any part of a C# program. The second table in this article 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're added as contextual keywords in order to avoid breaking programs written in earlier versions.

:::row::: :::column::: abstract
as
base
bool
break
byte
case
catch
char
checked
class
const
continue
decimal
default
delegate
do
double
else
enum
:::column-end::: :::column::: event
explicit
extern
false
finally
fixed
float
for
foreach
goto
if
implicit
in
int
interface
internal
is
lock
long
:::column-end::: :::column::: namespace
new
null
object
operator
out
override
params
private
protected
public
readonly
ref
return
sbyte
sealed
short
sizeof
stackalloc
:::column-end::: :::column::: static
string
struct
switch
this
throw
true
try
typeof
uint
ulong
unchecked
unsafe
ushort
using
virtual
void
volatile
while
:::column-end::: :::row-end:::

Contextual keywords

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

:::row::: :::column::: add
and
alias
ascending
args
async
await
by
descending
dynamic
equals
file
from
:::column-end::: :::column::: get
global
group
init
into
join
let
managed (function pointer calling convention)
nameof
nint
not
:::column-end::: :::column::: notnull
nuint
on
or
orderby
partial (type)
partial (method)
record
remove
required
scoped
:::column-end::: :::column::: select
set
unmanaged (function pointer calling convention)
unmanaged (generic type constraint)
value
var
when (filter condition)
where (generic type constraint)
where (query clause)
with
yield
:::column-end::: :::row-end:::

See also