C#中的多重继承问题

cha*_*987 5 c#

在我阅读帖子时,我想到了这个问题为什么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是所有类的最终基类.因此,它是基类的AB都在我的计划,也使A作为基类的B.所以B现在有两个基类,一个是A另一个Object.我覆盖一个方法GetHashCode()Object,类AB两者.但在类B,base.GetHashCode()方法返回的返回值GetHashCode()类的方法A.但我想从Object课堂上看这个价值.我怎么能得到它?

Tim*_*mwi 13

B只有一个基类,就是这样A.A有一个基类,就是这样object.没有多重继承; object仅由尚未从其他东西继承的类继承.

如果您仍然认为需要调用object.GetHashCode(),那么在如何调用(非虚拟)虚拟方法的原始实现的问题中,有一个非常hacky的解决方法吗?.