If the new() generic constraint is applied, as in this example, that allows the class or method (the AuthenticationBase<T> class in this case) to call new T(); to construct a new instance of the specified type. There is no other way, short of reflection (this includes using System.Activator, to construct a new object of a generic type. The new operator uses the internal [[Construct]] method, and it basically does the following: Initializes a new native object Sets the internal [[Prototype]] of this object, pointing to the Function prototype property.

Understanding the Context

If the function's prototype property is not an object (a primitive values, such as a Number, String, Boolean, Undefined or Null), Object.prototype is used instead. After ... It is NOT 'bad' to use the new keyword. But if you forget it, you will be calling the object constructor as a regular function.

Key Insights

If your constructor doesn't check its execution context then it won't notice that 'this' points to different object (ordinarily the global object) instead of the new instance. Therefore your constructor will be adding properties and methods to the global object ... A new expression is the whole phrase that begins with new. So what do you call just the "new" part of it? If it's wrong to call that the new operator, then we should not call "sizeof" the sizeof operator, or & the address-of operator (when it behaves like one).

Final Thoughts