簡體   English   中英

C#-對象聲明和用法

[英]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的實例。 該實例將創建另外兩個實例: mob1player 這兩個實例將分別創建兩個,依此類推。 最終,程序崩潰。

您應該創建一個特定的類來保存播放器的狀態及其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.

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