What is default and why is not overridable?
<p>While performing code review, I found code that could cut down on potential bugs by using the Null object pattern. Then I began thinking: wouldn't it be useful if the default value of that business object was a null object instead of a null reference? </p>

<p>Since C# provides the default operator, I tried to overload it like this:</p>

<pre><code>public static MyObject operator default (MyObject object) 
{
    return MyObject.Null;
}
</code></pre>

<p>That gives me the error: 'Overloadable unary operator expected'. On further digging, I found that one part of the docs says that default(T) is a Primary operator:<a href="http://msdn.microsoft.com/en-us/library/8edha89s%28v=VS.71%29.aspx" rel="nofollow">Overloadable Operators</a>.</p>

<p>And when you actually click on default(T) on the above page, it says default is a keyword.</p>

<p>On top of that, this page doesn't say that default is not overloadable: <a href="http://msdn.microsoft.com/en-us/library/8edha89s%28v=VS.100%29.aspx" rel="nofollow">Overloadable Operators (C# Programming Guide)</a>.</p>

<p>I know this is kind of academic but I am trying to understand the language deeper. What is default(T)? Is it an operator or a keyword? And why is not overloadable (from a language design standpoint)?</p>

<p>UPDATE: Yes I've read C# language spec section 7.5.13 and I know what the language does. I am trying to understand why.</p>
