Default. Every reference and value type has a default value. This value is returned by the default(Type) expression. Default is most useful for writing generic classes.
Notes, generic method. In a generic method, sometimes we need to return a value that is not yet initialized—we can use default() for this.
First example. We look at 4 uses of the default operator. The 4 types we apply the default expression to are the StringBuilder, int, bool and Program types.
using System;
using System.Text;
class Program
{
static void Main()
{
// Acquire the default values for these types and assign to a variable.
StringBuilder variable1 = default(StringBuilder);
int variable2 = default(int);
bool variable3 = default(bool);
Program variable4 = default(Program);
// Write the values.
Console.WriteLine(variable1); // Null
Console.WriteLine(variable2); // 0
Console.WriteLine(variable3); // False
Console.WriteLine(variable4); // Null
}
} (Blank)
0
False
(Blank)
Default, generic class. Here we have the generic class Test, which requires a class parameter with a public parameterless constructor.
Detail This method returns a new instance of the type parameter. If the size field is 0, it returns the default value.
using System;
using System.Text;
class Test<T> where T : class, new()
{
int _size;
public T GetOrDefault()
{
// Use default in a generic class method.
return _size == 0 ?
default(T) :
new T();
}
}
class Program
{
static void Main()
{
Test<StringBuilder> test = new Test<StringBuilder>();
Console.WriteLine(test.GetOrDefault() == null);
}
}True
A discussion. The default value expression is implemented using static analysis. This means the default expressions are evaluated at compile-time, resulting in no performance loss.
So No reflection to the type system or metadata relational database is used at runtime.
A summary. We looked at the default value expression. By understanding the usage of the default value expression, we can better understand the type system.
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.