c# - 如何将数据存储在 FILE 中以便垃圾收集器不会删除它们

问题描述

我正处于制作游戏的早期阶段,我正面临一个问题……垃圾收集器。我有一个创建所有 pokemon 信息的工厂,例如,这里是 magikarp :

        private PokemonInfo Magikarp()
        {
            //General information
            int pokedex = 052;
            string name = "Magikarp";
            string description = "It is said to be the world’s weakest Pokémon. No one kNows why it has managed to survive.";
            int gender = (int)Enum.gender.Both;
            double height = 0.9;
            double weight = 10;

            //Typing
            int type = (int)Enum.type.Water;

            //Abilities
            List<Ability> abilitiesPokemon = new List<Ability>();
            abilitiesPokemon.Add(abilities[(int)Enum.ability.Swift_Swim]);

            //Stats
            int baseHP = 20;
            int baseAttack = 10;
            int baseDefense = 55;
            int baseSpecialAttack = 15;
            int baseSpecialDefense = 20;
            int baseSpeed = 80;

            //Battle
            int catchrate = 255;
            int experience = (int)Enum.experience.Slow;
            int experienceYield = 20;

            //Moves
            List<Learnset> learnset = new List<Learnset>();
            List<Move> tmPokemon = new List<Move>();
            //========================================================Leveling
            learnset.Add(new Learnset(moves[(int)Enum.move.Splash],1));
            learnset.Add(new Learnset(moves[(int)Enum.move.Tackle],15));
            learnset.Add(new Learnset(moves[(int)Enum.move.Flail],30));
            //========================================================TM
            tmPokemon.Add(moves[(int)Enum.move.Bounce]);

            return new PokemonInfo(pokedex,name,description,gender,height,weight,type,abilitiesPokemon,catchrate,experience,experienceYield,baseHP,baseAttack,baseDefense,baseSpecialAttack,baseSpecialDefense,baseSpeed,learnset,tmPokemon,Gyarados(),20);
        }

有没有办法用我所有的 PokemonInfo 数据创建一个文件?我可以使用的东西:

Pokedex.GetInfo(FILE.Magikarp).description;

我在网上四处奔波,四处寻找,但找不到解决方案>.

解决方法

您可以创建一个类(或静态类)并声明静态公共属性(或字段)来保存您的 Pokemon。 在静态构造函数中,您可以定义(和存储)所有的 Pokemon。

public class Pokemons
{
    static Pokemons()
    {
        // here you set variables for your Pokemon
        // Then you set the Pokemon to the static field
        Magikarp = new PokemonInfo(...);
    }

    public static readonly PokemonInfo Magikarp;
}

在你的代码中的某个地方,你可以像这样访问你的口袋妖怪:

var myPokemon = Pokemons.Magikarp;