I looked around for this and could not find an answer. Say I have this code:
class Command<T> : ICommand<T>
{
public void Execute(T parameter)
{
var isNull = parameter == null;
// ...
}
}
T
could be any class, even a Nullable<>
. Does performing the check above cause boxing if T
is a value type? My understanding is that this is the same as calling ReferenceEquals
which takes two object
arguments, either of which would cause boxing if T
was a value type, if I understand correctly.
If the above does cause boxing, is there a more preferred way to do this without causing the box to occur? I know there is default(T)
but in the case of int
that is 0
, and I am looking to see if this value is null
without boxing it. Also, I am looking to do this in a way that satisfies both value and reference types.