我有一个非常奇怪的问题,似乎是某种编译器错误,但我也觉得这不太可能。
我有两个嵌套类都有类变量。其中一个(SpriteList
)工作得很好并且完美地初始化了所有变量。当我断开它时,程序在初始化该类时会中断。
另一个嵌套类(ItemList
)表现得有些奇怪。其中的类变量没有初始化,当我断开代码时,程序永远不会中断。
这是我的代码:
class Registry
{
public static Dictionary<string, StaticSprite> spriteRegistry = new Dictionary<string, StaticSprite>();
public static Dictionary<string, Item> itemRegistry = new Dictionary<string, Item>();
public static void registerSprite(string name, StaticSprite sprite)
{
spriteRegistry.Add(name, sprite);
Console.WriteLine("Registered Sprite: " + name + "!");
}
public static void registerItem(string name, Item item)
{
itemRegistry.Add(name, item);
Console.WriteLine("Registered Item: " + name + "!");
}
public class ItemList
{
public static Item test = new ItemTest();
}
public class SpriteList
{
public static StaticSprite rock = new SpriteRock();
public static StaticSprite pedestal = new SpritePedestal();
public static StaticSprite item = new SpriteItem();
}
}
我真的不知道这里有什么问题。两个类都不是在任何地方构建的,不应该是重要的。当我将ItemList中的变量移动到SpriteList中时,它运行正常。
我真的不知道这里有什么问题。
答案 0 :(得分:1)
如果没有a good, minimal, complete code example可靠地再现问题,就无法确定问题是什么。
但请注意,在运行时实际使用该类之前,不需要运行时初始化类。也就是说,在某些代码执行时,实际上需要该类。
静态初始化中的断点(例如静态构造函数,静态初始化程序调用的方法等)可能永远不会被命中,并且代码从未执行过,如果调用该代码的类本身从未实际用过该计划。
我觉得这可能是什么问题。如果没有实际使用ItemList
类的代码,则不需要在类中初始化static
字段,因此......它不会初始化。