Alex Rivera | Logout

What does default(object); do in C#?

Asked 2010-03-12T13:14:27.620
171

Googling is only coming up with the keyword, but I stumbled across some code that says

MyVariable = default(MyObject);

and I am wondering what it means.

c#
Edit
Report

2 Answers

22

default keyword will return null for reference types and zero for numeric value types.

For structs, it will return each member of the struct initialized to zero or null depending on whether they are value or reference types.

from MSDN

Simple Sample code :<br>
    class Foo
    {
        public string Bar { get; set; }
    }

    struct Bar
    {
        public int FooBar { get; set; }
        public Foo BarFoo { get; set; }
    }

    public class AddPrinterConnection
    {
        public static void Main()
        {

            int n = default(int);
            Foo f = default(Foo);
            Bar b = default(Bar);

            Console.WriteLine(n);

            if (f == null) Console.WriteLine("f is null");

            Console.WriteLine("b.FooBar = {0}",b.FooBar);

            if (b.BarFoo == null) Console.WriteLine("b.BarFoo is null");

        }
    }

OUTPUT:

0
f is null
b.FooBar = 0
b.BarFoo is null
answered 2010-03-12T13:19:32.040
1

The default keyword returns the "default" or "empty" value for a variable of the requested type.

For all reference types (defined with class, delegate, etc), this is null. For value types (defined with struct, enum, etc) it's an all-zeroes value (for example, int 0, DateTime 0001-01-01 00:00:00, etc).

It's mostly used with generic code that can be applied to both reference and value types, because you can't assign null to a value type variable.

answered 2010-03-12T13:23:01.847

Your Answer