In C# the “new” keyword can
be used in 3 different ways, as operator, modifier and constraint. We all are familiar
with new operator usage, i.e. for creating
object and invoking constructor. But
other two usages are not much popular in normal coding.
“new” Operator
It is used for instantiating objects and invoking
constructors. For example,
BaseClass baseClass = new BaseClass();
“new”
Modifier
The new keyword can
be used for hiding the inherited member of base class. If the base class and derived
class having the member with same name and type, and we need to hide the base
class member in child class, then we can use the “new”
keyword to hide the base class member.
public class
BaseClass
{
public int GetValue()
{ return 10; }
}
public class
DerrivedClass : BaseClass
{
public new int GetValue() { return
20; }
}
Here the BaseClass and DerrivedClass have the same method
and we are hiding the BaseClass member in DerrivedClass using “new”.
“new” Constraint
Here new keyword is
using as part of generic class definition.
If the generic class needs to create any instances of the specified
type, then we need to specify the new constraint. As an example,
public class
MyFormatter
where T : IFormattable
where F : IMyFormatProvider,
new()
{
public T Value { get;
set; }
public MyFormatter(T Value)
{
this.Value = Value;
}
public string
Format()
{
F formatter = new F();
return Value.ToString(formatter.GetFormatter(), null);
}
}