Question: Greetings everybody. I am sorry, if this was already asked before (searched in vain) or is really very simple, but i just can't get it. The [MSDN definition](http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx) of a Nullable type, states, that it is defined in a following manner:

```
[SerializableAttribute]
public struct Nullable<T>
where T : struct, new()

```

So the question is quite straightforward: How is this definition possible? Or this is just a typo? Every value type already has a default constructor. Indeed, when i try to compile something like this, the compiler reasonably says, that it is illegal to apply both constraints at the same time, because the second one is implicitly included in a first one.

Thanks in advance.

Answer: 
C# requires that value types have default public constructors, but the CLR does not.

If you defined a type in a language that supported a struct definition of this type (I believe C++/CLI allows this) there would be ambiguity as to when it is called.
If you look at the IL disassembly, you can see that it does have a constructor constraint:

```
.class public sequential ansi serializable sealed beforefieldinit Nullable<valuetype (System.ValueType) .ctor T>

```

If the documentation is generated directly from the assembly metadata, maybe this is the cause?