(edit - misread question)
If you want to get the original object.GetHashCode()
version; you can't - at least, not unless A
makes it available via something like:
protected int GetBaseHashCode() { return base.GetHashCode();}
(and have B
call GetBaseHashCode()
).
The reason it overflows is that GetHashCode
is (obviously) virtual - it doesn't matter if you cast it to object
; it still starts at the most-derived implementation in the actual object, i.e. B.GetHashCode()
(hence the explosion).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…