識別子
識別子とは
名前のことです。プログラムに登場するすべての要素(クラス、メソッド、変数、など)は、お互いを識別するために名前を持っています。C#の命名規則は自由度が高いため、ほとんどの文字を識別子として使用することができます。
命名規則
しかし、一般的ではない名前をつけることにメリットはほとんどないため、以下のルールに従って名前をつけることをおすすめします。
- 1文字目はアルファベット、またはアンダースコアであること
- 2文字目以降は、1文字目で使える文字、もしくは数字であること
- 変数名に含まれるアルファベットの大文字/小文字は区別される
- 予約語、コンテキストキーワードでないこと
<例>
・sample100
・_sample
・SAMPLE
・Sample_sample
・forth、form(予約語を含んだ識別子は使用可能)
<例>
・1sample(数字で始まっている)
・i'mSample(記号が混在している)
・for(予約語であるため使用不可)
予約語
予約語とは
C#としてあらかじめ意味が決められているキーワード(単語)のことです。
主な予約語
abstract | event | new | struct |
as | explicit | null | switch |
base | extern | object | this |
bool | FALSE | operator | throw |
break | finally | out | TRUE |
byte | fixed | override | try |
case | float | params | typeof |
catch | for | private | uint |
char | foreach | protected | ulong |
checked | goto | public | unchecked |
class | if | readonly | unsafe |
const | implicit | ref | ushort |
continue | in | return | using |
decimal | int | sbyte | virtual |
default | interface | sealed | void |
delegate | internal | short | volatile |
do | is | sizeof | while |
double | lock | stackalloc | |
else | long | static | |
enum | namespace | string |
コンテキストキーワード
コンテキストキーワードとは
特定の文脈(Context)でのみ意味を持つキーワードのことです。決められた場所を除いては、識別子として利用することができます。
ただし、あえてコンテキストキーワードを識別子として使うメリットはないので、使うべきではありません。
主なコンテキストキーワード
add | init | record |
and | into | remove |
alias | join | select |
ascending | let | set |
args | managed(関数ポインターの呼び出し規約) | unmanaged(関数ポインターの呼び出し規約) |
async | nameof | unmanaged(ジェネリック型制約) |
await | nint | value |
by | not | var |
descending | notnull | when(フィルター条件) |
dynamic | nuint | where(ジェネリック型制約) |
equals | on | where(クエリ句) |
from | or | ある場合 |
get | orderby | yield |
global | partial(型) | |
group | partial(メソッド) |
逐語的識別子(verbatim identifier)
逐語的識別子とは
予約語を識別子として使うために、先頭に「@」(アットマーク)をつけた識別子のことです。
主に異なるプログラミング元号との連携を想定した仕組みです。C#で「event」は予約語ですが、そうではない言語もあります。例えばPythonだと「event」は予約語ではありません。このような変数にC#からアクセスする際に、逐語的識別子(@event)を使います。