If I have a (reference - does it matter?) type MyType which does not override the Equals method, what heuristics will be used when determining if an IC
According to MSDN:
Implementations can vary in how they determine equality of objects; for example, List<(Of <(T>)>) uses Comparer<(Of <(T>)>)..::.Default, whereas Dictionary<(Of <(TKey, TValue>)>) allows the user to specify the IComparer<(Of <(T>)>) implementation to use for comparing keys.
The best way to do it on your own is to use the overload that takes an IEqualityComparer
public class MyComparer : IEqualityComparer
{
public bool Equals(MyType x, MyType y)
{
return x.Id == y.Id;
}
public int GetHashCode(MyType obj)
{
return obj.Id.GetHashCode();
}
}