1. はじめに
C#のdefaultキーワードは、変数に規定値(デフォルト値)を設定する際に使用される機能です。この記事では、defaultの基本的な使い方と、各データ型における規定値について解説します。
2. defaultキーワードの基本
2.1. 基本的な使用方法
[code language="csharp"]
// defaultキーワードを使用した変数の初期化
int a = default;
string b = default;
bool c = default;
[/code]
2.2. 主な型の規定値
[code language="csharp"]
void ShowDefaultValues()
{
Debug.Log($"int型の規定値: {default(int)}"); // 0
Debug.Log($"string型の規定値: {default(string)}"); // null
Debug.Log($"bool型の規定値: {default(bool)}"); // false
}
[/code]
3. 各データ型のdefault値
3.1. 値型(Value Types)の規定値
[code language="csharp"]
// 数値型
int intValue = default; // 0
float floatValue = default; // 0.0f
double doubleValue = default; // 0.0d
// 論理型
bool boolValue = default; // false
// 構造体
Vector3 vector = default; // (0, 0, 0)
[/code]
3.2. 参照型(Reference Types)の規定値</h3>
[code language="csharp"]
// 参照型はすべてnull
string stringValue = default; // null
GameObject gameObject = default; // null
Transform transform = default; // null
Component component = default; // null
[/code]
4. defaultの使用意図と意味
4.1. 明示的な初期化の意図表現
[code language="csharp"]
public class GameManager : MonoBehaviour
{
// 暗黙的な初期化(規定値で初期化される)
private int score;
// 明示的な初期化(意図を明確に表現)
private int highScore = default;
}
[/code]
4.2. デフォルト値との比較
[code language="csharp"]
// 以下の3つは同じ結果となる
int value1; // 暗黙的な初期化
int value2 = 0; // 明示的に0を代入
int value3 = default; // defaultキーワードを使用
[/code]
5. 実践的な使用例
5.1. メソッドでの使用
[code language="csharp"]
public class PlayerData : MonoBehaviour
{
// 初期スコアとして明示的に0を設定
private int currentScore = default;
// プレイヤーの初期参照をnullに設定
private GameObject playerReference = default;
public void ResetScore()
{
// スコアを規定値にリセット
currentScore = default;
}
}
[/code]
5.2. ジェネリックメソッドでの活用
[code language="csharp"]
public T GetDefaultValue<T>()
{
return default(T);
}
[/code]
// 使用例
int defaultInt = GetDefaultValue<int>(); // 0
string defaultString = GetDefaultValue<string>(); // null
6. defaultを使用する利点
6.1. コードの意図の明確化
- 意図的に初期値を設定していることが明確
- コードレビューでの理解が容易
- 保守性の向上
6.2. 型安全性の確保
- コンパイル時に型チェックが行われる
- 型に応じた適切な規定値が設定される
7. 使用時の注意点
7.1. パフォーマンスへの影響
- defaultキーワードの使用は、直接値を代入する場合と同じパフォーマンス
- 追加のオーバーヘッドは発生しない
7.2. 可読性の考慮
[code language="csharp"]
// 良い例:意図が明確
private List<Enemy> enemies = default; // 明示的にnullで初期化
// 避けるべき例:冗長な使用
private int count = default; // 単に0を使用する方が直感的な場合もある
[/code]
8. まとめ
defaultキーワードは、以下の場合に特に有用です:
- 変数の意図的な初期化を明示したい場合
- ジェネリックプログラミングでの型に依存しない初期化
- コードの意図を明確に表現したい場合
ただし、使用する際は以下の点に注意が必要です:
- 過度な使用は避ける
- 直接値を使用した方が明確な場合はその方法を選択
- チームのコーディング規約に従う


コメント