非静态类中的类型初始化失败

本文关键字:初始化 失败 类型 静态类 | 更新日期: 2023-09-27 18:27:30

我有一个恼人的问题,需要为我的一个主要项目解决。我试图从一个非静态类引用一个静态变量(由一个静态类拥有)。当我尝试执行此操作时,它会引发异常"Eternal_Continent.PSTATS的类型初始值设定项引发了异常。"

内部异常读取

对象引用未设置为对象的实例。

这是我的PSTATS类

public static class PSTATS
    {
        static Locations Locations;
        public static string name = "";
        public static int health = 100;
        public static int dmg = 1;
        public static int mana = 100;
        public static int hpotion = 3;
        public static int mpotion = 3;
        public static int def = 1;
        public static int level = 1;
        public static int xp = 0;
        public static float tradereward = 1.0f;
        public static string employer = "Knight Artemis";
        public static misc.Quest currentquest;
        public static misc.NPC currentnpc = null;
        public static int npcindex = 0;
        public static misc.Location currentlocation = Locations.Ardimir;
        public static string reward = "Charisma + 1";
        public static bool finding = false;
        public static string questreward = "G";
        public static int kills = 0;
        public static int gold = 0;
        // Has found item
        public static bool found = false;
        //Has job
        public static bool job = false;
        public static int reqkills = 0;
        public static int reqgold = 0;
        public static int dex = 1;
        public static int str = 1;
        public static int itl = 1;
        public static int cha = 1;
        public static bool existingdialog = false;
    }

这是一个称为的非静态类

public class Weapon
        {
            #region
            public Weapon(string name, string desc, int dmg, int mana)
            {
                Name = name;
                Desc = desc;
                Dmg = Convert.ToInt32(dmg * (PSTATS.level / 0.9));
                Manausage = mana;
            }
            public int Manausage;
            public int manausage
            {
                get
                {
                    return Manausage;
                }
                set
                {
                    Manausage = value;
                }
            }
            public string Name;
            public string name
            {
                get
                {
                    return Name;
                }
                set
                {
                    Name = value;
                }
            }
            public string Desc;
            public string desc
            {
                get
                {
                    return Desc;
                }
                set
                {
                    Desc = value;
                }
            }
            public int Dmg;
            public int dmg
            {
                get
                {
                    return Dmg;
                }
                set
                {
                    Dmg = Convert.ToInt32(value * (PSTATS.level / 0.9));
                }
            }
            #endregion
        }

感谢任何能帮我解决这个问题的人。

非静态类中的类型初始化失败

我认为我们仍然缺少您的一些代码,但我的直觉告诉我这与PSTATS类中名为Locations的第一个成员有关。看起来Locations是一个枚举,这意味着你不需要对它的引用。试着删除该成员,也许可以发布与miscLocations枚举相关的代码。

我复制了您创建这两个类的确切代码
然后我在main中创建了一个对象:Weapon w=new Weapon("n","d",6,3);它是成功的,并且使用静态PSTATS变量没有问题。

我所做的唯一更改是删除PSTAT中的位置和其他变量,这些变量是创建武器所不需要的,并允许我运行测试。