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
字段,所以......它不是'从未初始化过。
我有一个非常奇怪的问题,似乎是某种编译器错误,但我也觉得这不太可能。
我有两个嵌套的 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
字段,所以......它不是'从未初始化过。