既定値の式では、型の 既定値 が生成されます。 既定値の式には、 既定の演算子 呼び出しと 既定のリテラルの 2 種類があります。
また、switch
ステートメント内の既定のケース ラベルとして、default
キーワードを使用します。
default 演算子
default
演算子への引数では、次の例で示すように、型または型パラメーターの名前を指定する必要があります。
Console.WriteLine(default(int)); // output: 0
Console.WriteLine(default(object) is null); // output: True
void DisplayDefaultOf<T>()
{
var val = default(T);
Console.WriteLine($"Default value of {typeof(T)} is {(val == null ? "null" : val.ToString())}.");
}
DisplayDefaultOf<int?>();
DisplayDefaultOf<System.Numerics.Complex>();
DisplayDefaultOf<System.Collections.Generic.List<int>>();
// Output:
// Default value of System.Nullable`1[System.Int32] is null.
// Default value of System.Numerics.Complex is (0, 0).
// Default value of System.Collections.Generic.List`1[System.Int32] is null.
既定のリテラル
default
リテラルを使用すると、コンパイラが式の型を推論できる場合に、型の既定値を生成できます。
default
リテラル式は、T
が推論された型であるdefault(T)
式と同じ値を生成します。
default
リテラルは、次のいずれかの場合に使用できます。
- 変数の代入または初期化。
- 省略可能なメソッド パラメーターの既定値の宣言。
- 引数の値を指定するメソッド呼び出し。
-
return
ステートメント内、または式形式のメンバー内の式として。
次の例は、 default
リテラルの使用方法を示しています。
T[] InitializeArray<T>(int length, T initialValue = default)
{
if (length < 0)
{
throw new ArgumentOutOfRangeException(nameof(length), "Array length must be nonnegative.");
}
var array = new T[length];
for (var i = 0; i < length; i++)
{
array[i] = initialValue;
}
return array;
}
void Display<T>(T[] values) => Console.WriteLine($"[ {string.Join(", ", values)} ]");
Display(InitializeArray<int>(3)); // output: [ 0, 0, 0 ]
Display(InitializeArray<bool>(4, default)); // output: [ False, False, False, False ]
System.Numerics.Complex fillValue = default;
Display(InitializeArray(3, fillValue)); // output: [ (0, 0), (0, 0), (0, 0) ]
ヒント
.NET スタイルルール IDE0034 を使用して、コードベースでの default
リテラルの使用に関する基本設定を指定します。
C# 言語仕様
詳細については、C# 言語仕様の「既定値の式」セクションを参照してください。
こちらも参照ください
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET