c#多重继承

0 c# inheritance static class

所以我有一个需要Socket的基类:

class Sock
{
    public Socket s;

    public Sock(Socket s)
    {
        this.s = s;
    }

    public virtual void Process(byte[] data) { }
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后我又上了一堂课.如果接受新套接字,则将创建此类的新实例:

class Game : Sock
{
    public Random Random = new Random();

    public Timerr Timers;
    public Test Test;

    public Game(Socket s) : base(s) { }

    public static void ReceiveNewSocket(object s)
    {
        Game Client = new Game((Socket)s);
        Client.Start();
    }

    public override void Process(byte[] buf)
    {
        Timers = new Timerr(s);
        Test = new Test(s);
        Test.T();
    }
}
Run Code Online (Sandbox Code Playgroud)

在Sock类中我有一个虚拟函数被Game类覆盖.(处理函数)在这个函数中我从Test Class调用一个函数(Test + Timerr Class:

class Test : Game
{
    public Test(Socket s) : base(s) { }

    public void T()
    {
        Console.WriteLine(Random.Next(0, 10));
        Timers.Start();
    }
}

class Timerr : Game
{
    public Timerr(Socket s) : base(s) { }

    public void Start()
    {
        Console.WriteLine("test");
    }
}
Run Code Online (Sandbox Code Playgroud)

所以在Process函数中我在Test中调用一个函数.在这个函数(T)中,我需要从Timerr类调用一个函数.但问题是它总是为NULL,尽管在Process中调用了构造函数.例如,可以调用随机类,我猜它是因为它用构造函数定义:

public Random Random = new Random();
Run Code Online (Sandbox Code Playgroud)

这就是为什么其他类(没有构造函数):

public Timerr Timers;
public Test Test;
Run Code Online (Sandbox Code Playgroud)

在继承的类Test.But中它总是为null我称之为此函数中其他类的其他方法.我怎么能解决这个问题?

Ser*_*gGr 6

你为什么需要Test成为一个子类Game?你有null因为Test在创建的对象ProcessGame不同实例要比Game对象.可能你需要的是

class Test 
{
    Game Game;
    public Test(Game g)
    {
        Game = g;
    }

    public void T()
    {
        Console.WriteLine(Random.Next(0, 10));
        Game.Timers.Start();
    }
}
Run Code Online (Sandbox Code Playgroud)

public override void Process(byte[] buf)
{
    Timers = new Timerr(s);
    Test = new Test(this);
    Test.T();
}
Run Code Online (Sandbox Code Playgroud)

但是很难猜出你在做什么,并给你一个很好的建议.