C# チートシート
最終更新
Hello World とプログラムの構造
トップレベルステートメント (.NET 6 以降) を使えば、定型的なクラスを省略できます。
| 要素 | コード |
|---|---|
| トップレベルプログラム | Console.WriteLine("Hello, World!"); |
| 名前空間をインポート | using System; |
| 従来のエントリポイント | static void Main(string[] args) { ... } |
| 1 行を出力 | Console.WriteLine("text"); |
| 1 行を読み取る | string s = Console.ReadLine(); |
| 文字列補間 | Console.WriteLine($"Hi {name}"); |
| コメント | // line と /* block */ |
データ型
| 型 | 説明 |
|---|---|
int | 32 ビット符号付き整数 |
long | 64 ビット符号付き整数 |
double / float | 浮動小数点数 |
decimal | 高精度の十進数 (金額) |
bool | true または false |
char | 1 つの Unicode 文字 |
string | 不変のテキスト |
var | コンパイラが型を推論 |
int? | null 許容の値型 |
変数
| 操作 | 構文 |
|---|---|
| 宣言と初期化 | int x = 5; |
| 型推論 | var name = "Ada"; |
| 定数 | const double Pi = 3.14159; |
| 読み取り専用フィールド | readonly int id; |
| null 許容の参照 | string? maybe = null; |
| null 合体 | var y = maybe ?? "default"; |
| null 条件 | int? len = text?.Length; |
制御フロー
| 文 | 構文 |
|---|---|
| if / else | if (x > 0) { ... } else { ... } |
| switch 文 | switch (n) { case 1: ...; break; default: ...; } |
| switch 式 | var s = n switch { 1 => "one", _ => "other" }; |
| while ループ | while (i < n) { ... } |
| do-while ループ | do { ... } while (i < n); |
| for ループ | for (int i = 0; i < n; i++) { ... } |
| foreach ループ | foreach (var item in list) { ... } |
| break / continue | break; はループを抜け、continue; は次の反復へ進む |
メソッド
| 操作 | 構文 |
|---|---|
| メソッドを定義 | int Add(int a, int b) { return a + b; } |
| 式形式の本体 | int Add(int a, int b) => a + b; |
| 戻り値なし | void Greet() { ... } |
| 省略可能な引数 | int Pow(int b, int e = 2) { ... } |
| 名前付き引数 | Pow(b: 2, e: 3); |
| out 引数 | bool TryParse(string s, out int n) { ... } |
| static メソッド | static int Square(int x) => x * x; |
| ラムダ式 | Func<int, int> f = x => x * 2; |
クラスとオブジェクト指向
| 操作 | 構文 |
|---|---|
| クラスを定義 | class Dog { ... } |
| 自動プロパティ | public string Name { get; set; } |
| 読み取り専用プロパティ | public int Id { get; } |
| コンストラクタ | public Dog(string name) { Name = name; } |
| オブジェクトを生成 | var d = new Dog("Rex"); |
| 継承 | class Puppy : Dog { ... } |
| インターフェース | interface IRunnable { void Run(); } |
| メソッドをオーバーライド | public override void Speak() { ... } |
| レコード (不変) | record Point(int X, int Y); |
コレクション
System.Collections.Generic のジェネリックなコレクション。
| 型 | 用途と例 |
|---|---|
List<T> | 動的配列: list.Add(1); list.Count; |
Dictionary<K, V> | キーと値: dict["a"] = 1; dict.ContainsKey("a"); |
HashSet<T> | 一意な値: set.Add(5); set.Contains(5); |
Queue<T> | FIFO: q.Enqueue(x); q.Dequeue(); |
Stack<T> | LIFO: s.Push(x); s.Pop(); |
| 配列 | int[] nums = { 1, 2, 3 }; |
| コレクション初期化子 | var l = new List<int> { 1, 2, 3 }; |
| ディクショナリを反復 | foreach (var kv in dict) { kv.Key; kv.Value; } |
LINQ
コレクションを流れるように問い合わせます。System.Linq のもの。
| 操作 | 構文 |
|---|---|
| フィルタ | nums.Where(n => n > 0) |
| 射影 / map | nums.Select(n => n * 2) |
| ソート | nums.OrderBy(n => n) / OrderByDescending(...) |
| 最初の一致 | nums.First(n => n > 5) / FirstOrDefault(...) |
| Any / All | nums.Any(n => n < 0) / nums.All(n => n > 0) |
| 一致を数える | nums.Count(n => n > 0) |
| 集計 | nums.Sum(), nums.Max(), nums.Average() |
| グループ化 | items.GroupBy(i => i.Category) |
| 実体化 | .ToList() / .ToArray() |
よく使うパターン (プロパティ、非同期)
| パターン | 構文 |
|---|---|
| 非同期メソッド | async Task<int> GetAsync() { ... } |
| タスクを await | var result = await GetAsync(); |
| try / catch | try { ... } catch (Exception e) { ... } |
| finally | finally { ... } は必ず実行される |
| using (破棄) | using var file = File.OpenRead(path); |
| 文字列の書式設定 | $"Total: {amount:C}" |
| ジェネリッククラス | class Box<T> { public T Value; } |
| パターンマッチング | if (obj is Dog d) { d.Bark(); } |
最もよく使う C# の構文、コレクション、LINQ クエリを 1 ページにまとめました。この C# チートシートは、C# を書くためのクイックリファレンスです。データ型、制御フロー、クラス、List/Dictionary のコレクション、LINQ、そして慣用的な .NET コードを形づくるプロパティと非同期のパターンを収録しています。
ここに載っているものはすべて .NET 上の標準の C# で、dotnet CLI で動きます。必要なものをコピーするか、C# プレイグラウンドでどのスニペットもその場で試してみてください。SDK のインストールは不要です。
C# チートシート よくある質問
この C# チートシートは無料ですか?
はい。この C# チートシートは完全に無料で、登録も不要です。ブックマークしておけば、構文やコレクション、LINQ メソッドを調べたいときにいつでも戻ってこられます。
C# の値型と参照型の違いは何ですか?
値型 (
int、double、bool、struct、enum) はデータを直接保持し、代入やメソッドへの受け渡しの際にコピーされます。コピーを変更しても元には影響しません。参照型 (class、string、配列、List<T>) はヒープ上のデータへの参照を保持するので、2 つの変数が同じオブジェクトを指すことができ、一方を通した変更がもう一方からも見えます。string は参照型ですが不変のようにふるまいます。LINQ とは何で、いつ使うべきですか?
LINQ (Language Integrated Query) は、
Where、Select、OrderBy といったメソッド群で、手動のループの代わりに読みやすく連結できる呼び出しでコレクションを絞り込み・変換・集計できるものです。絞り込んだり射影したリストを作るためにループを書くような場面では、いつでも使いましょう。簡潔で、ToList() を呼ぶか反復するまで遅延評価されます。C# をオンラインで練習できますか?
はい。C# プレイグラウンドを開けば、このチートシートのどのスニペットもブラウザ上で実行できます。SDK のインストールは不要です。体系的に学びたいときは、Coddy の無料インタラクティブ C# コースが、変数とループからクラス、コレクション、LINQ まで段階的に導いてくれます。
このチートシートは初心者に向いていますか?
はい。最もよく使う構成要素 (型、制御フロー、メソッド) から高度なもの (LINQ、非同期、ジェネリクス) へと並べてあるので、初日から上のセクションを使い、残りには慣れながら進めます。