It's so you can create implicit conversions from T
to Envelope<T>
.
Here's some examples to help you understand:
Envelope<string> envelope = "My string"; // allowed
Envelope<int> envelopeInt = 1; // allowed
envelopeInt = 12; // allowed
envelopeInt = "string"; // not allowed (not of type int)
Console.WriteLine(envelope.Body); // Outputs "My string"