Menu
Coddy logo textTech

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 */

データ型

説明
int32 ビット符号付き整数
long64 ビット符号付き整数
double / float浮動小数点数
decimal高精度の十進数 (金額)
booltrue または false
char1 つの 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 / elseif (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 / continuebreak; はループを抜け、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)
射影 / mapnums.Select(n => n * 2)
ソートnums.OrderBy(n => n) / OrderByDescending(...)
最初の一致nums.First(n => n > 5) / FirstOrDefault(...)
Any / Allnums.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() { ... }
タスクを awaitvar result = await GetAsync();
try / catchtry { ... } catch (Exception e) { ... }
finallyfinally { ... } は必ず実行される
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# の値型と参照型の違いは何ですか?
値型 (intdoubleboolstructenum) はデータを直接保持し、代入やメソッドへの受け渡しの際にコピーされます。コピーを変更しても元には影響しません。参照型 (classstring、配列、List<T>) はヒープ上のデータへの参照を保持するので、2 つの変数が同じオブジェクトを指すことができ、一方を通した変更がもう一方からも見えます。string は参照型ですが不変のようにふるまいます。
LINQ とは何で、いつ使うべきですか?
LINQ (Language Integrated Query) は、WhereSelectOrderBy といったメソッド群で、手動のループの代わりに読みやすく連結できる呼び出しでコレクションを絞り込み・変換・集計できるものです。絞り込んだり射影したリストを作るためにループを書くような場面では、いつでも使いましょう。簡潔で、ToList() を呼ぶか反復するまで遅延評価されます。
C# をオンラインで練習できますか?
はい。C# プレイグラウンドを開けば、このチートシートのどのスニペットもブラウザ上で実行できます。SDK のインストールは不要です。体系的に学びたいときは、Coddy の無料インタラクティブ C# コースが、変数とループからクラス、コレクション、LINQ まで段階的に導いてくれます。
このチートシートは初心者に向いていますか?
はい。最もよく使う構成要素 (型、制御フロー、メソッド) から高度なもの (LINQ、非同期、ジェネリクス) へと並べてあるので、初日から上のセクションを使い、残りには慣れながら進めます。
Coddy programming languages illustration

CoddyでC#を学ぼう

始める