【问题标题】:C# nested object propertiesC# 嵌套对象属性
【发布时间】:2015-10-25 00:32:06
【问题描述】:

您好,我正在 C# 中使用返回对象的嵌套属性进行一些测试,但我遇到了对象引用异常。

我希望能够访问嵌套属性中的数组,但在当前上下文中,我可以看到我没有在属性中实例化任何新对象。

这就是基本问题出现的地方...在这一切的中间我应该在哪里声明一个“新”对象实例?我什至需要在“foo”类或“bar”类中声明和新的对象引用吗?

namespace CustomProperties_TEST
{
    class Program
    {
        public foo[] Blatherskite { get; set; }

        static void Main(string[] args)
        {
            Program myProgram = new Program();

            myProgram.Blatherskite[0].CustomProperty1[0].CustomProperty2 = 999999999;
            myProgram.Blatherskite[1].CustomProperty1[0].CustomProperty2 = 999999999;

            foreach (var item in myProgram.Blatherskite)
            {
                Console.WriteLine(item.CustomProperty1[0].CustomProperty2);
            }
        }
    }

    class foo
    {
        private bar[] customevariable1;

        public bar[] CustomProperty1
        {
            get { return customevariable1; }
            set { customevariable1 = value; }
        }
    }

    class bar
    {
        private int customintvariable2;

        public int CustomProperty2
        {
            get { return customintvariable2; }
            set { customintvariable2 = value; }
        }
    }
}

【问题讨论】:

    标签: c# object properties nested


    【解决方案1】:

    您可能需要执行以下操作,因为数组默认初始化为 null

    static void Main(string[] args)
    {
        Program myProgram = new Program();
    
        // This is your missing initialization
        myProgram.Blatherskite = new foo[2] {
              new foo{CustomProperty1 = new bar[2]{new bar{CustomProperty2 = 1},new bar{CustomProperty2 = 2}}}
            , new foo{CustomProperty1 = new bar[2]{new bar{CustomProperty2 = 3},new bar{CustomProperty2 = 4}}}};
    
        myProgram.Blatherskite[0].CustomProperty1[0].CustomProperty2 = 999999999;
        myProgram.Blatherskite[1].CustomProperty1[0].CustomProperty2 = 999999999;
    
        foreach (var item in myProgram.Blatherskite)
        {
            Console.WriteLine(item.CustomProperty1[0].CustomProperty2);
        }
    }
    

    使用数组意味着您必须设置它们的大小。如果您想要更大的灵活性,请使用List,然后您可以简单地向其中添加项目。

    【讨论】:

    • 这太棒了。我知道我错过了其中一个街区。但是搜索嵌套属性并没有产生多少。一个新手问题,但我希望这可以帮助像我这样的其他人。谢谢。
    • 很高兴它有帮助。如果您觉得它有帮助,您可以投票并标记为已回答。继续编码:)
    猜你喜欢
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多