[英]C# - Object Declaration and Usage
我已經用C#編寫了此代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Object
{
class Program
{
int hp;
Program mob1 = new Program();
Program player = new Program();
static void Main(string[] args)
{
Program go = new Program();
go.next();
}
public void next()
{
mob1.hp = 50;
player.hp = 100;
Console.WriteLine("Player's HP: " + player.hp);
Console.ReadKey();
}
}
}
當我運行該程序時,出現堆棧溢出異常,程序崩潰了。 異常發生在第一個對象mon的聲明中。
為什么是這樣? 以及我該如何解決?
您正在生成無限遞歸。
這樣考慮:在啟動應用程序時,您正在創建類型為Program
的實例。 該實例將創建另外兩個實例: mob1
和player
。 這兩個實例將分別創建兩個,依此類推。 最終,程序崩潰。
您應該創建一個特定的類來保存播放器的狀態及其hp
例如, public class Player{}
。
編輯
class Program
{
Player mob1 = new Player(); // mob1 and player are now of type Player
Player player = new Player();
static void Main(string[] args)
{
Next();
}
static public void Next()
{
mob1.Hp = 50;
player.Hp = 100;
Console.WriteLine("Player's HP: " + player.Hp);
Console.ReadKey();
}
}
public class Player
{
public int Hp {get; set;}
}
之所以崩潰,是因為您剛剛創建了一個無限循環-遞歸,但沒有任何終止方法。 類的每個實例都會創建新對象,最終導致程序崩潰。
您有帶有類型程序的2個字段的類程序,每個字段都有2個類型為Program的字段
您創建了一個無限的變量循環。
您的字段聲明
Program mob1 = new Program();
等創建的實例Program
的每個實例時Program
創建...
這將導致重復創建Program對象,直到堆棧上沒有更多內存為止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.