gpt4 book ai didi

c# - 如何调用像 base.base.GetHashCode() 这样的二级基类方法

转载 作者:IT王子 更新时间:2023-10-29 04:12:53 30 4
gpt4 key购买 nike

class A
{
public override int GetHashCode()
{
return 1;
}
}
class B : A
{
public override int GetHashCode()
{
return ((object)this).GetHashCode();
}
}

new B().GetHashCode()

这会溢出堆栈。如何从 B.GetHashCode() 调用 Object.GetHashCode()

编辑:B 现在继承自 A

最佳答案

(编辑 - 误读问题)

如果想获取原始的object.GetHashCode()版本;你不能 - 至少不能,除非 A 通过类似的方式使它可用:

protected int GetBaseHashCode() { return base.GetHashCode();}

(并让 B 调用 GetBaseHashCode())。

它溢出的原因是 GetHashCode 是(显然)虚拟的——将它转换为 object 并不重要;它仍然从实际对象中最派生的实现开始,即 B.GetHashCode()(因此爆炸)。

关于c# - 如何调用像 base.base.GetHashCode() 这样的二级基类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1006530/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com