Вызов Add<object>(x)
и Add<SomeOtherType>(x)
даст один и тот же код ha sh. Единственное отличие состоит в том, что первый будет box x
, если x
является типом значения. Я почти уверен, что Add
сделан generi c, поэтому бокс не происходит, если вы передаете тип значения. Однако здесь это не имеет значения, потому что вы имеете дело с отраженными object
s (которые, возможно, помещены в рамку перед вызовом Add
).
Вот справочный источник Add
:
public void Add<T>(T value)
{
Add(value?.GetHashCode() ?? 0);
}
...
private void Add(int value)
{
...
Он просто вызывает частный Add
с value
s ha sh код. Легко видеть, что одна и та же реализация GetHashCode
будет вызываться независимо от того, что такое T
, пока value
является одним и тем же объектом, потому что полиморфизм времени выполнения.