类型的异常' System.StackOverflowException'是由WorldServer类引发的

时间:2018-01-28 20:58:19

标签: c#

这是我的代码WorldServer.cs

public class JsonData
{
    public string header;
    public Dictionary<string, string> data = new Dictionary<string, string>();
    public int connectionId;
}

namespace Server
{
    public class WorldServer
    {
        private Character character = new Character();

        void Test()
        {
            character.UpdateCharacterState();
        }

        public void Broadcast()
        {
            Console.WriteLine("We in Broadcast");
        }
    }
}

这是我的Character.cs

public class Character : WorldServer
{
    public void UpdateCharacterState()
    {
        Console.WriteLine("State:");
        Broadcast();
    }
}

当我尝试运行我的代码时,我收到以下错误:

  

类型的异常&#39; System.StackOverflowException&#39;被扔了。

我有一个基类WorldServer和一个扩展它Character的基类。我必须从WorldServer类调用方法UpdateCharacterState,并从Character类调用Broadcast类中声明的WorldServer类。有可能吗?怎么样? 你能告诉我我的错误在哪里,我该如何解决?

1 个答案:

答案 0 :(得分:2)

好的,所以这会起作用....但是它不是很好的OOP,但是当你学习如何编码时,我会把它留给你的旅程(和未来的问题)。

总之...

using System;
using System.Collections.Generic;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var server = new WorldServer();

            server.Test();
        }
    }

    public class JsonData
    {
        public string header;
        public Dictionary<string, string> data = new Dictionary<string, string>();
        public int connectionId;
    }


    public class WorldServer
    {
        private Character character = new Character();

        public void Test() {
            character.UpdateCharacterState(this);
        }

        public void Broadcast(){
            Console.WriteLine("We in Broadcast");
        }
    }



    public class Character 
    {
        public void UpdateCharacterState(WorldServer server)
        {
            Console.WriteLine("State:");

            server.Broadcast();
        }
    }
}

我认为你需要研究的是课程与实例以及实际意义。我给出的修改后的代码为您介绍了一个新概念(潜在地),您可以称之为&#34;依赖注入&#34;这是引用其他对象类型的好方法....尝试尽可能地限制继承的使用。

祝你好运并继续学习!