default value expressions - produce the default value
A default value expression produces the default value of a type. There are two kinds of default value expressions: the default operator call and a default literal.
You also use the default
keyword as the default case label within a switch
statement.
default operator
The argument to the default
operator must be the name of a type or a type parameter, as the following example shows:
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 literal
You can use the default
literal to produce the default value of a type when the compiler can infer the expression type. The default
literal expression produces the same value as the default(T)
expression where T
is the inferred type. You can use the default
literal in any of the following cases:
- In the assignment or initialization of a variable.
- In the declaration of the default value for an optional method parameter.
- In a method call to provide an argument value.
- In a
return
statement or as an expression in an expression-bodied member.
The following example shows the usage of the default
literal:
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) ]
Tip
Use .NET style rule IDE0034 to specify a preference on the use of the default
literal in your codebase.
C# language specification
For more information, see the Default value expressions section of the C# language specification.
See also
Σχόλια
https://aka.ms/ContentUserFeedback.
Σύντομα διαθέσιμα: Καθ' όλη τη διάρκεια του 2024 θα καταργήσουμε σταδιακά τα ζητήματα GitHub ως μηχανισμό ανάδρασης για το περιεχόμενο και θα το αντικαταστήσουμε με ένα νέο σύστημα ανάδρασης. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα:Υποβολή και προβολή σχολίων για