The default domain is an application domain that is created automatically by the CLR every time it is initialized in a process. The default domain is not unloaded until the process shuts down. Most hosts dont run code in the default domain for two main reasons. First, the default domain cannot be shut down independently of the process. Second, for security and isolation reasons, it is desirable that the user code and hosting code execute in different application domains. Instead, hosts create application domains with a set of properties that control security, isolation, loading, etc.