2

我对 C# 还很陌生,过去 3 天一直在努力学习。我很好奇为什么下面的代码不能正常工作?我收到以下错误:对象引用未设置为对象的实例。当我尝试调用 data.dOffsets["roomtargets"] 时。但是,调用 data.sProcessName 确实没有任何错误。

我有两个类/文件。程序.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}
            };
        }
    }

任何帮助将不胜感激!

4

2 回答 2

9
        Dictionary<string, int> dOffsets = new Dictionary<string, int>()
        {
            {"roomtargets", 0x0018FA48}
        };

此代码将字典初始化为构造函数中的内部变量。将其更改为:

        dOffsets = new Dictionary<string, int>()
        {
            {"roomtargets", 0x0018FA48}
        };

或者this.dOffsets让它更清楚。

于 2013-01-13T15:14:11.673 回答
1

您的 dOffsets 对于构造函数来说是本地的。您的类已经具有该属性,因此您不需要在那里声明另一个局部变量

public Data()
{
    sProcessName = "Client";

    dOffsets = new Dictionary<string, int>()
    {
        {"roomtargets", 0x0018FA48}
    };
}

这应该工作

于 2013-01-13T15:16:06.393 回答