簡體   English   中英

WorldServer類引發了類型為System.StackOverflowException的異常

[英]Exception of type 'System.StackOverflowException' was thrown by WorldServer class

這是我的代碼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();
    }
}

當我嘗試運行代碼時,出現以下錯誤:

引發了類型為'System.StackOverflowException'的異常。

我有一個基類WorldServer和一個擴展它的Character 我必須從調用WorldServer類中的方法UpdateCharacterStateCharacterBroadcast它在聲明的方法WorldServer類。 有可能嗎? 您能告訴我我的錯誤在哪里,我該如何解決?

好的,所以這將起作用。...但是它不是很好的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();
        }
    }
}

我認為對您來說,帶給您的是研究類與實例以及這到底意味着什么。 我給出的修改后的代碼為您引入了一個新概念(可能),稱為“依賴注入”,這是引用其他對象類型的好方法。...嘗試盡可能地限制對繼承的使用。

祝你好運,繼續學習!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM