All of the above are possible except the constant field of a type that is a struct. I can see why the non-string reference types would default to the only literal expression they can represent - null - and if I'm not mistaken the default value of a struct is an instance of the struct with all its fields set to their default value, but why is it that a const struct field is not possible? is there a reason why or is it just the way c# was written? oh and by the way, what's the idea of allowing enum types to have a default constructor?Code:class T { enum E { } struct S { } interface I { } delegate void D(); class C { } const E e = new E(); //const S s = default(S); const I i = default(I); const D d = default(D); const C c = default(C); const int x = 10; const string y = "s"; }