我对C#很新,并且在过去的3天里一直在努力学习。我很好奇为什么下面的代码不能正常工作?我收到以下错误:对象引用未设置为对象的实例。当我尝试调用data.dOffsets [“roomtargets”]时。但是,调用data.sProcessName确实可以正常工作..
我有两个类/文件。 program.cs:
class Program
{
public static Data data = new Data();
static void Main(string[] args)
{
Console.WriteLine("data.sProcessName: {0}", data.sProcessName);
Console.WriteLine("data.dOffsets[\"roomtargets\"]: {0}", data.dOffsets["roomtargets"]);
Data.cs:
public class Data
{
public string sProcessName { get; set; }
public Dictionary<string, int> dOffsets { get; set; }
public Data()
{
sProcessName = "Client";
Dictionary<string, int> dOffsets = new Dictionary<string, int>()
{
{"roomtargets", 0x0018FA48}
};
}
}
非常感谢任何帮助!
答案 0 :(得分:7)
Dictionary<string, int> dOffsets = new Dictionary<string, int>()
{
{"roomtargets", 0x0018FA48}
};
此代码将字典初始化为构造函数中的内部变量。将其更改为:
dOffsets = new Dictionary<string, int>()
{
{"roomtargets", 0x0018FA48}
};
或this.dOffsets
以使其更清晰。
答案 1 :(得分:1)
您的dOffsets是构造函数的本地。您的类已经具有该属性,因此您不需要在那里声明另一个局部变量
public Data()
{
sProcessName = "Client";
dOffsets = new Dictionary<string, int>()
{
{"roomtargets", 0x0018FA48}
};
}
这应该有效