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
Because your type doesn't override Equals, the default implementation of Equals will be used, i.e. reference equality. So Contains will be true if the collection contains that very instance.
To use your own comparison, implement IEqualityComparer
(e.g. to compare the Ids) and pass an instance of your comparer into the Contains method. (This assumes you are able to use LINQ extensions, as the "native" ICollection
method doesn't have the IEqualityComparer overload.)