C#: C# リファレンス

最終更新:2026-08-26

1. C# キーワードクイックリファレンス

キーワード 説明
abstract 抽象クラスまたは抽象メンバーの宣言
as 安全な型変換。失敗した場合はnullを返す
base 基底クラスのメンバへのアクセス
bool ブール型(true/false)
break ループまたはスイッチを終了
byte 8ビットの符号なし整数 (0~255)
case ブランチラベルの切り替え
catch 例外をキャッチ
char Unicode文字(16ビット)
checked オーバーフローチェックを有効にする
class クラスの宣言
const 定数の宣言
continue 現在のループ反復をスキップ
decimal 128ビット高精度10進数
default デフォルトのブランチを切り替える、またはデフォルト値を入力する
delegate デリゲート型の宣言
do do-whileループ
double 64ビット倍精度浮動小数点
else if else 分岐
enum 列挙型の宣言
event イベントの宣言
explicit 明示的な変換演算子を宣言する
extern 外部実装メソッドの宣言
false ブールリテラル false
finally try-finallyブロック
fixed 変数アドレスのピン留め(安全ではない)
float 32ビット単精度浮動小数点
for forループ
foreach コレクションを反復処理する
goto 無条件ジャンプ
if 条件チェック
implicit 暗黙の変換演算子を宣言する
in 一般的な反変性 / foreach 反復 / パラメータ修飾子
int 32ビット符号付き整数
interface インターフェースの宣言
internal アセンブリ内で表示
is 型パターンマッチング
lock 排他ロック
long 64ビット符号付き整数
namespace 名前空間の宣言
new インスタンスの作成 / ベースメンバーの非表示 / ジェネリック制約
null ヌル参照リテラル
object すべての型の基底型
operator 演算子のオーバーロードを宣言する
out 出力パラメータ/汎用共分散
override 基本クラスの仮想メンバーのオーバーライド
params 可変長パラメータ
private 非公開アクセス
protected アクセス制限
public 一般公開
readonly 読み取り専用フィールド
ref 参照渡し
return 戻り値
sbyte 8ビット符号付き整数
sealed シールドクラス / シールドオーバーライド
short 16ビット符号付き整数
sizeof 型サイズを取得 (unsafe)
stackalloc スタック上にメモリを割り当てる(安全ではない)
static 静的メンバー
string Unicode 文字列参照型
struct 値型構造体の宣言
switch 複数ブランチの選択
this 現在のインスタンスへの参照 / インデクサーの宣言 / 拡張メソッド
throw 例外をスロー
true ブールリテラル true
try 例外処理ブロック
typeof Typeオブジェクトを取得
uint 32ビットの符号なし整数
ulong 64ビットの符号なし整数
unchecked オーバーフローチェックを無効にする
unsafe 安全でないコンテキスト
ushort 16ビットの符号なし整数
using 名前空間のインポート/リソースの破棄
virtual 仮想メンバーの宣言
void 戻り値なし
volatile フィールドを「最適化キャッシュ対象外」としてマーク
while whileループ

2. フォーマット指定子のクイックリファレンス

指定子 説明 例
D / d 10進整数 42.ToString("D5") → "00042"
F / f 固定小数点 3.14.ToString("F2") → "3.14"
C / c 通貨 1234.5.ToString("C") → "$1,234.50"
P / p パーセント 0.156.ToString("P1") → "15.6 %"
E / e 科学表記 12345.ToString("E2") → "1.23E+004"
X / x 16進数 255.ToString("X") → "FF"
G / g 一般(最もコンパクトな形式が自動的に選択されます) 3.14.ToString("G") → "3.14"

3. 一般的な文字列メソッド

メソッド 説明 例
Length 文字数を取得 "abc".Length → 3
Substring(start) 開始位置から終了位置までを抽出 "hello".Substring(2) → "llo"
Substring(start, len) 指定した長さの部分文字列を抽出 "hello".Substring(1, 3) → "ell"
Replace(old, new) すべて置換 "aabb".Replace("a","c") → "ccbb"
Split(separators) 区切り文字で分割して配列にする "a,b,c".Split(',') → ["a","b","c"]
Trim() 先頭と末尾の空白を削除 " hi ".Trim() → "hi"
Contains(value) 部分文字列が含まれているかどうか "hello".Contains("ell") → true
IndexOf(value) 部分文字列の最初のインデックスを検索 "abcabc".IndexOf("bc") → 1
LastIndexOf(value) 部分文字列の最後のインデックスを検索 "abcabc".LastIndexOf("bc") → 4
ToUpper() 大文字に変換 "Abc".ToUpper() → "ABC"
ToLower() 小文字に変換 "AbC".ToLower() → "abc"
StartsWith(value) 文字列が指定された値で始まるかどうか "hello".StartsWith("he") → true
EndsWith(value) 文字列が指定された値で終わるか "hello".EndsWith("lo") → true
PadLeft(total) 指定された長さに合わせてスペースを左側に埋める "5".PadLeft(3) → " 5"
PadRight(total) 指定された長さに合わせてスペースで右詰め "5".PadRight(3) → "5 "
Remove(start) 開始位置から終了位置までの文字を削除 "hello".Remove(2) → "he"
Remove(start, len) 指定した長さの文字を削除 "hello".Remove(1,2) → "hlo"
Insert(start, value) 指定した位置に文字列を挿入 "ab".Insert(1,"X") → "aXb"
IsNullOrEmpty(s) ヌル値か空文字列か string.IsNullOrEmpty(null) → true
IsNullOrWhiteSpace(s) ヌルか空白のみか string.IsNullOrWhiteSpace(" ") → true
Join(sep, arr) 区切り文字で配列を結合 string.Join("-",["a","b"]) → "a-b"
Concat(a, b) 文字列の連結 string.Concat("x","y") → "xy"
Format(fmt, args) フォーマット文字列 string.Format("{0}+{1}={2}",1,2,3) → "1+2=3"
Compare(a, b) 2つの文字列の順序を比較する string.Compare("a","b") → -1
Equals(a, b) 等しいかどうか string.Equals("a","a") → true
Clone() 同じ文字列参照を返す "s".Clone() → "s"
Copy(s) 文字列のコピーを作成 (非推奨) string.Copy("s") → "s"
ToCharArray() 文字配列に変換 "abc".ToCharArray() → ['a','b','c']

4. コレクションタイプの比較

コレクションの種類 名前空間 アクセス ソート可能 動的 代表的な用途
Array System インデックス O(1) はい いいえ 固定サイズで高性能なデータ格納
List<T> System.Collections.Generic インデックス O(1) はい はい 汎用動的リスト
Dictionary<K,V> System.Collections.Generic キー O(1) いいえ はい キーと値の対応付けと高速検索
Queue<T> System.Collections.Generic FIFO いいえ はい タスクスケジューリング、メッセージキュー
Stack<T> System.Collections.Generic LIFO いいえ はい 操作の取り消し、式の評価
HashSet<T> System.Collections.Generic ハッシュ検索 いいえ はい 重複排除、集合演算
LinkedList<T> System.Collections.Generic ノードの探索 いいえ はい 先頭・末尾への頻繁な挿入・削除

5. アクセス修飾子の比較

修飾子 同一クラス サブクラス(同一アセンブリ) 非サブクラス(同一アセンブリ) サブクラス(異なるアセンブリ) 非サブクラス(異なるアセンブリ)
public ✅ ✅ ✅ ✅ ✅
private ✅ ❌ ❌ ❌ ❌
protected ✅ ✅ ❌ ✅ ❌
internal ✅ ✅ ✅ ❌ ❌
protected internal ✅ ✅ ✅ ✅ ❌
private protected ✅ ✅ ❌ ❌ ❌

6. 共通ネームスペースのクイックリファレンス

名前空間 目的 一般的なクラス
System 基本型と中核機能 Console, Math, Environment, Convert, DateTime
System.IO ファイルおよびストリームの操作 File, Directory, Path, StreamReader, StreamWriter, FileStream
System.Collections 非ジェネリックコレクション ArrayList, Hashtable, Queue, Stack
System.Collections.Generic 汎用コレクション List<T>, Dictionary<K,V>, Queue<T>, Stack<T>, HashSet<T>, LinkedList<T>
System.Linq LINQ クエリ Enumerable, Queryable
System.Text テキスト処理とエンコーディング StringBuilder, Encoding, UTF8Encoding
System.Text.Json JSONシリアライズ JsonSerializer, JsonDocument, JsonNode
System.Threading スレッドと同期 Thread, Mutex, Semaphore, Monitor, CancellationToken
System.Threading.Tasks 非同期タスクと並列タスク Task, Task<T>, Parallel, ValueTask
System.Reflection 型リフレクション Assembly, Type, MethodInfo, PropertyInfo, FieldInfo
System.Text.RegularExpressions 正規表現 Regex, Match, Group, Capture
System.Diagnostics 診断およびプロセス管理 Process, Debug, Trace, Stopwatch

7. C# のバージョン別機能概要

バージョン 年 主な機能
C# 1.0 2002 クラス、構造体、インターフェース、デリゲート、イベント、演算子のオーバーロード、インデクサ、プロパティ、属性
C# 2.0 2005 ジェネリック、パーシャルクラス、匿名メソッド、Null許容型、イテレータ、共変性と反変性
C# 3.0 2007 LINQ、ラムダ式、拡張メソッド、暗黙的型指定 (var)、匿名型、自動プロパティ、式ツリー
C# 4.0 2010 動的バインディング (dynamic)、名前付きパラメータ、オプションのパラメータ、ジェネリックの共変性と反変性
C# 5.0 2012 async/await、呼び出し元情報(CallerMemberName など)
C# 6.0 2015 文字列補間、null 条件演算子、式本体のメンバー、using static、例外フィルター、自動プロパティの初期化子
C# 7.0 2017 パターンマッチング、タプル、ローカル関数、out変数、桁区切り記号、refリターン
C# 7.1 2017 async Main、デフォルトリテラル、推論されるタプル名
C# 7.2 2017 パラメータ、ref 構造体、readonly 構造体、Span<T>
C# 7.3 2018 パターンマッチングの強化、タプルの比較、stackalloc 配列
C# 8.0 2019 ヌル許容参照型、範囲とインデックス、非同期ストリーム、インターフェースのデフォルトメソッド、パターンマッチングの強化、using 宣言
C# 9.0 2020 レコード型、初期化プロパティ、トップレベル文、強化されたパターンマッチング、ターゲット型指定の new、共変戻り値
C# 10.0 2021 グローバルな using 宣言、ファイルスコープのネームスペース、レコード構造体、定数文字列の補間、ラムダ式の機能強化
C# 11.0 2022 生の文字列リテラル、必須プロパティ、ジェネリック属性、リストパターン、UTF-8 文字列リテラル
C# 12.0 2023 プライマリコンストラクタ、コレクション式、インライン配列、ref struct のジェネリックサポート、任意の型のエイリアス

▶ サンプル

CSHARP
// A quick look-up snippet: keywords + format specifiers + common string methods
int n = 42;
string s = n.ToString("D5");        // format specifier: "00042"
string t = "  Hello  ".Trim();      // string method
System.Console.WriteLine($"{s} {t}");
▶ 試してみよう
TEXT 📖 参照専用
00042 Hello

❓ よくある質問

Q C#の公式リファレンスはどこで見られますか?
A 公式リファレンスはMicrosoft Learnに掲載されています。すべてのメソッド、プロパティ、およびエッジケースが網羅されています。
Q このリファレンスを最新の状態に保つにはどうすればよいですか?
A Microsoft Learn をブックマークしてください。C# は毎年進化しており、このページでは C# 10 以降の機能について解説しています。
Q なぜ明示的な型よりも var が好まれるのですか?
A 文脈から型が明らかな場合(例:var list = new List<int>())、var を使用することで記述を簡潔にできます。 右辺から型が明確でない場合は、明示的な型を使用してください。

📖 まとめ

📝 練習問題

  1. 知らない手法を3つ選び、Microsoft Learnのドキュメントを読んでください。それぞれについて、1行で要約を書き出してください。
  2. コードの中で、明示的な型指定を使用している箇所を1つ見つけ、そこで var を使った方がより明確になる場合、それをリファクタリングしてください。
  3. 述語を引数とするLINQメソッドを5つ挙げなさい。それぞれの使用場面について説明しなさい。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%