description | title | ms.date | f1_keywords | helpviewer_keywords | ms.custom | |||||
---|---|---|---|---|---|---|---|---|---|---|
C# Keywords |
C# Keywords |
09/15/2022 |
|
|
updateeachrelease |
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:::
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:::