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".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 を使用することで記述を簡潔にできます。 右辺から型が明確でない場合は、明示的な型を使用してください。📖 まとめ
- このリファレンスでは、C#の主要な文、演算子、およびメソッドについて解説しています
- Microsoft Learnは、エッジケースや新機能に関する信頼できる情報源です
- 型が明らかな場合は
varを優先し、不明確な場合は明示的な型を指定する - LINQメソッドは安定していますが、毎年新しいものが登場しています
📝 練習問題
- 知らない手法を3つ選び、Microsoft Learnのドキュメントを読んでください。それぞれについて、1行で要約を書き出してください。
- コードの中で、明示的な型指定を使用している箇所を1つ見つけ、そこで
varを使った方がより明確になる場合、それをリファクタリングしてください。 - 述語を引数とするLINQメソッドを5つ挙げなさい。それぞれの使用場面について説明しなさい。