【问题标题】:C# Can you save object that called a method to another object as reference nodeC#你可以将调用方法的对象保存到另一个对象作为引用节点吗
【发布时间】:2017-08-28 22:23:14
【问题描述】:

在说明问题标题时遇到问题,但我想总结一下。

我想做的是这样的:

对象 1 具有将子对象添加到数组的方法;对象2是通过方法的参数传递的;然后,我希望对象 2 在添加时自动将对象 1 分配给它的父引用节点。

这里是一个例子:

    Room1 = new Area(10, 10, "Anthony's House");
    R1_LivingRoom = new SubArea(5, 5, "Living ROom");
    int[] loc = new int[2] {10,10 };
    Room1.setSubArea(loc, R1_LivingRoom);
    R1_LivingRoom.Parent = Room1;

我想要一种跟踪层次结构的方法,而无需像本例中那样自己分配它。如果:

    Room1.setSubArea(loc, R1_LivingRoom);

自动执行:

      R1_LivingRoom.Parent = Room1;

被添加到 Room1。

我这样做是唯一可能的方法吗?直接分配它还是通过各种参数传递 Room1?或者有没有办法让它在通过 setSubArea 添加时,它可以引用 Room1 的调用对象并自动将其分配给父对象?

谢谢,

【问题讨论】:

    标签: c# class variable-assignment


    【解决方案1】:

    这应该可行:

    public class Room
    {
       public void setSubArea(int[] loc, SubArea room)
       {
           //some code
           room.Parent = this;
       }
    }
    

    【讨论】:

    • 这就是我最初所做的,但它对我不起作用。当我打电话给 room.Parent 时,它不会返回它。但是当我直接在外面分配它时,它确实(room.Parent = Room1)。 “this”不是真的返回对调用对象的引用吗?
    • 它必须有效,可能您正在将对象放置在某处或做其他事情,如果没有深入了解您的代码,我无法说出什么。尝试一些非常简单的测试用例,您会发现它确实有效。
    • 是的,它奏效了。我正在做一些边界检查并忘记将其更改为边界内。谢谢,我需要学习仔细检查。
    猜你喜欢
    • 2011-03-09
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 2020-11-19
    相关资源
    最近更新 更多