【发布时间】:2011-02-12 20:21:24
【问题描述】:
所以我得到了一个需要 Socket 的基类:
class Sock
{
public Socket s;
public Sock(Socket s)
{
this.s = s;
}
public virtual void Process(byte[] data) { }
...
}
然后我又上了一节课。如果一个新的套接字被接受,那么这个类的一个新实例将被创建:
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();
}
}
在 Sock 类中,我得到了一个被 Game 类覆盖的虚函数。(进程函数)在这个函数中,我从测试类调用了一个函数(Test+ Timerr 类:
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");
}
}
所以在 Process 函数中,我在 Test 中调用了一个函数。在这个函数(T)中,我需要从 Timerr 类调用一个函数。但问题是它总是 NULL ,尽管在 Process 中调用了构造函数。例如可以调用随机类,我猜是因为它是用构造函数定义的。:
public Random Random = new Random();
这就是为什么其他类(没有构造函数):
public Timerr Timers;
public Test Test;
在继承的类Test中总是空的。但是它的本质是我在这个函数中调用其他类的其他方法。我该如何解决这个问题?
【问题讨论】:
标签: c# class inheritance static