C#从另一个类访问字典不起作用

C#从另一个类访问字典不起作用,c#,object,dictionary,reference,C#,Object,Dictionary,Reference,我对C#相当陌生,在过去的三天里一直在努力学习。我很好奇为什么下面的代码不能正常工作?我遇到以下错误:对象引用未设置为对象的实例。当我尝试调用data.dOffsets[“roomtargets”]时。但是,调用data.sproccessname不会出现任何错误 我有两个类/文件。该计划包括: class Program { public static Data data = new Data(); static void Main(string[]

我对C#相当陌生,在过去的三天里一直在努力学习。我很好奇为什么下面的代码不能正常工作?我遇到以下错误:对象引用未设置为对象的实例。当我尝试调用data.dOffsets[“roomtargets”]时。但是,调用data.sproccessname不会出现任何错误

我有两个类/文件。该计划包括:

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}
            };
        }
    }
公共类数据
{
公共字符串sProcessName{get;set;}
公共字典doffset{get;set;}
公共数据()
{
sProcessName=“客户端”;
Dictionary doffset=newdictionary()
{
{“roomtargets”,0x0018FA48}
};
}
}
任何帮助都将不胜感激

Dictionary doffset=newdictionary()
        Dictionary<string, int> dOffsets = new Dictionary<string, int>()
        {
            {"roomtargets", 0x0018FA48}
        };
{ {“roomtargets”,0x0018FA48} };
这段代码将字典初始化为构造函数中的内部变量。将其更改为:

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

或者
this.dOffsets
,使其更清晰。

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

public Data()
{
    sProcessName = "Client";

    dOffsets = new Dictionary<string, int>()
    {
        {"roomtargets", 0x0018FA48}
    };
}
公共数据()
{
sProcessName=“客户端”;
dOffsets=newdictionary()
{
{“roomtargets”,0x0018FA48}
};
}

这当然会起作用

!基本上,我在构造函数中重新定义了相同的变量,但不再作为公共变量了?感谢您的快速和有益的答复!您的变量是在构造函数范围内声明的,因此它仅在该构造函数内有效。因为变量的名称与类成员的名称相同,所以它隐藏了该成员(在您的示例中是一个属性)。在此之后,必须使用
关键字访问该属性。感谢您的快速和有用的回答!