default C# with Example
For classes, interfaces, delegate, array, nullable (such as int?) and pointer types, default(TheType) returns null: class MyClass {} Debug.Assert(default(MyClass) == null); Debug.Assert(default(string) == null); For structs and enums, default(TheType) returns the same as new TheType(): struct Coordinates { public int X { get; set; } public int Y { get; set; } } struct MyStruct { public string Name { get; set; } public Coordinates Location { get; set; } public Coordinates? SecondLocation { get; set; } public TimeSpan Duration { get; set; } } var defaultStruct = default(MyStruct); Debug.Assert(defaultStruct.Equals(new MyStruct())); Debug.Assert(defaultStruct.Location.Equals(new Coordinates())); Debug.Assert(defaultStruct.Location.X == 0); Debug.Assert(defaultStruct.Location.Y == 0); Debug.Assert(defaultStruct.SecondLocation == null); Debug.Assert(defaultStruct.Name == null); Debug.Assert(defaultStruct.Duration == TimeSpan.Zero); default(T) can be particularly useful when T is a generic parameter for which no constraint is present to decide whether T is a reference type or a value type, for example: public T GetResourceOrDefault(string resourceName) { if (ResourceExists(resourceName)) { return (T)GetResource(resourceName); } else { return default(T); } }