[英]Exception of type 'System.StackOverflowException' was thrown
[英]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
類中的方法UpdateCharacterState
和Character
類Broadcast
它在聲明的方法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.