非静态类中的类型初始化失败
本文关键字:初始化 失败 类型 静态类 | 更新日期: 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
是一个枚举,这意味着你不需要对它的引用。试着删除该成员,也许可以发布与misc
和Locations
枚举相关的代码。
我复制了您创建这两个类的确切代码
然后我在main中创建了一个对象:Weapon w=new Weapon("n","d",6,3);它是成功的,并且使用静态PSTATS变量没有问题。
我所做的唯一更改是删除PSTAT中的位置和其他变量,这些变量是创建武器所不需要的,并允许我运行测试。