概要
機能別索引&概要。 C# で使える式と文の一覧を先に示しておきます。
式
式: int x = ... とか f(...) の ... の部分に書けるもの。 x + y みたいな演算子適用が主。 その他、メンバー アクセスとかラムダ式とかクエリ式とか。
一覧(優先度順):
| カテゴリー | 式 | 参考 |
|---|---|---|
基本式 |
|
メンバー アクセス:「クラス」 |
|
||
|
||
|
null 条件演算子:「null の取り扱い」 |
|
|
「インクリメント・デクリメント」(後置き) |
|
|
||
|
||
|
「実行時型情報」型情報の取得 |
|
|
||
|
「既定値」 |
|
|
「匿名関数」 |
|
|
||
|
||
|
ポインター アクセス:「unsafe」 |
|
|
「unsafe」 |
|
単項演算 |
|
「算術演算子」 |
|
「論理演算子」 |
|
|
「論理演算子」 |
|
|
「Index」 |
|
|
「インクリメント・デクリメント」(前置き) |
|
|
||
|
非同期処理の完了待ち:「非同期処理」 |
|
|
true/false 式:「演算子のオーバーロード」 |
|
|
ポインター間接参照:「unsafe」 |
|
|
ポインター化:「unsafe」 |
|
範囲 |
|
「Range」 |
switch 式 |
|
「switch 式」 |
|
「with 式」 |
|
乗除算 |
|
「算術演算子」 |
加減算 |
|
「算術演算子」 |
シフト |
|
「シフト」 |
関係式/型検査 |
|
「関係演算」 |
|
「ダウンキャスト」 |
|
|
「ダウンキャスト」 |
|
等値比較 |
|
「算術演算子」 |
論理演算※1 |
|
「論理演算子」 |
|
「論理演算子」 |
|
|
「論理演算子」 |
|
条件演算※1 |
|
「論理演算子」(短絡評価) |
|
「論理演算子」(短絡評価) |
|
|
||
|
「throw 式」 |
|
|
「条件演算子」 |
|
クエリ式、 ラムダ式、 代入※2 |
|
「クエリ式」 |
|
||
|
「代入演算」 |
|
|
+= など:「代入演算」 |
※1 論理演算と条件演算に関しては、同列の優先順位ではなく、上から順に優先度が付いています。
※2 クエリ式、ラムダ式、代入は同列で、例えば、以下のような C# コードを書けます。
int sum = 0;
Func<IEnumerable<int>> q = () =>
from x in new[] { 1, 2, 3, 4, 5 }
select sum += x;
結合規則
優先順位が同じ場合、クエリ式、ラムダ式、代入の3つは右から、その他の式は左から結合します。
左結合は、例えば、a + b + c + d なら ((a + b) + c) + d と同じ意味です。
右結合の例は Func<int> f = x => s += x; なら Func<int> f = (x => (s += x)); になります。
評価順
演算子のオペランドは、演算子の優先順位や結合規則によらず、常に左から順に評価されます。 例えば、以下のように、画面への出力を伴うメソッド Echo を呼ぶと、2, 3, 4 の順で出力されます。
using System;
class Program
{
static int Echo(int x)
{
Console.WriteLine(x);
return x;
}
static void Main()
{
var s = Echo(2) + Echo(3) * Echo(4);
// 演算子の優先順位に関係なく、Echo(2) → Echo(3) → Echo(4) の順に呼ばれる
}
}
2
3
4
文
一覧:
| カテゴリー | 文 | 例 | 参考 |
|---|---|---|---|
宣言 |
ローカル変数 |
|
「変数と式」 |
ローカル定数 |
|
「定数」 |
|
式 |
|
||
オーバーフローのチェック |
|
||
条件分岐 |
if 文 |
|
|
switch 文 |
|
「switch 文」 |
|
反復処理 |
while 文 |
|
|
do 文 |
|
「制御フロー」「do-while 文」 |
|
for 文 |
|
||
foreach 文 |
|
||
反復の中断 |
break 文 |
|
「反復処理」 |
continue 文 |
「反復処理」 |
||
goto 文 |
|
「goto 文」 |
|
return 文 |
|
「関数」 |
|
yield 文 |
|
「イテレーター」 |
|
例外処理 |
|
「例外処理」 |
|
リソース破棄 |
|
「リソースの破棄」 |
|
ロック |
|
「lock 文」 |
|
