C#: C# リファレンス

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".Length3
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%