anu*_*r2k 3 c# null dictionary
假设我有这段代码:
public static class Converters {
public static Dictionary<Unit, Dictionary<string, Func<float, float>>> ConverterDictionary =
new Dictionary<Unit, Dictionary<string, Func<float, float>>>
{
{
Unit.MS, new Dictionary<string, Func<float, float>>() {
{"m/s -> km/h", MStoKMH },
{"m/s -> mph", MStoMPH }
}
}
};
private static Func<float, float> MStoKMH = val => val * 3.6f;
private static Func<float, float> MStoMPH = val => val * 2.23693629f;
}
public enum Unit {
MS
}
Run Code Online (Sandbox Code Playgroud)
我在其他地方尝试使用以下代码MStoKMH从ConverterDictionary(并调用它)中检索函数:
Func<float, float> test = Converters.ConverterDictionary[Unit.MS]["m/s -> km/h"];
float x = test(5);
Run Code Online (Sandbox Code Playgroud)
但最后一行抛出一个NPE("测试为空").为什么我的代码无法检索MStoKMH功能?
声明MStoKMH和MStoMPH变量第一.
当它们像这样静态时,它们会按顺序初始化.因此,在创建字典时,这些变量仍为空.
从C#规范的10.5.5开始:
因此,在初始化类时,首先将该类中的所有静态字段初始化为其默认值,然后以文本顺序执行静态字段初始值设定项.
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |