在我阅读帖子时,我想到了这个问题为什么C#不支持多重继承? 来自MSDN博客.
首先看下面的代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class A
{
int num;
public A()
{
num = 0;
}
public A(int x)
{
num = x;
}
public override int GetHashCode()
{
return num + base.GetHashCode();
}
}
class B : A
{
int num;
public B()
{
num = 0;
}
public B(int x)
{
num = x;
}
public override int GetHashCode()
{
return num + base.GetHashCode();
}
}
class Program
{
static void Main(string[] args)
{
A a = new A();
B b = new B();
Console.Write(a.GetHashCode() + " " + b.GetHashCode());
Console.Read();
}
}
}
Run Code Online (Sandbox Code Playgroud)
Objectclass是所有类的最终基类.因此,它是基类的A和B都在我的计划,也使A作为基类的B.所以B现在有两个基类,一个是A另一个Object.我覆盖一个方法GetHashCode()的Object类,类A和B两者.但在类B,base.GetHashCode()方法返回的返回值GetHashCode()类的方法A.但我想从Object课堂上看这个价值.我怎么能得到它?
Tim*_*mwi 13
B只有一个基类,就是这样A.A有一个基类,就是这样object.没有多重继承; object仅由尚未从其他东西继承的类继承.
如果您仍然认为需要调用object.GetHashCode(),那么在如何调用(非虚拟)虚拟方法的原始实现的问题中,有一个非常hacky的解决方法吗?.