类变量未初始化

时间:2015-07-14 04:21:28

标签: c# variables initializing

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

我有两个嵌套类都有类变量。其中一个(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中时,它运行正常。

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

1 个答案:

答案 0 :(得分:1)

如果没有a good, minimal, complete code example可靠地再现问题,就无法确定问题是什么。

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

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

我觉得这可能是什么问题。如果没有实际使用ItemList类的代码,则不需要在类中初始化static字段,因此......它不会初始化。