Class 变量未初始化

Class variables not initializing

我有一个非常奇怪的问题,似乎是某种编译器错误,但我也觉得这不太可能。

我有两个嵌套的 classes,它们都有 class 个变量。其中之一 (SpriteList) 工作得很好并且完美地初始化了所有变量。当我断点它时,程序在初始化 class.

时确实中断了

另一个嵌套的 class (ItemList) 有点奇怪。其中的 class 变量没有初始化,当我断点代码时,程序永远不会中断。

这是我的代码:

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();
    }
}

我真的不知道这里出了什么问题。 class 都没有在任何地方构造,这不重要。当我将 ItemList 中的变量移动到 SpriteList 时,它运行正常。

我真的不知道这里出了什么问题。

没有 a good, minimal, complete code example 可靠地重现问题,就不可能确定问题出在哪里。

但请注意,在运行时实际使用 class 之前,运行时不需要初始化 class。也就是说,在执行某些代码时实际上需要 class.

静态初始化中的断点(例如,静态构造函数、静态初始化程序调用的方法等)可能永远不会命中,并且代码永远不会执行,如果从中调用该代码的 class本身从未在程序中实际使用过。

在我看来,这很可能就是问题所在。如果没有实际使用 ItemList class 的代码,那么就不需要初始化 class 中的 static 字段,所以......它不是'从未初始化过。