C# - 实例化包含自己类型成员的类的对象?

时间:2016-12-07 06:26:10

标签: c#

我到处寻找解决这个问题的方法,但我找不到任何东西,这可能是因为我没有正确地说出来,所以我会尽可能多地详细说明。< / p>

基本上我遇到的问题是如何让以下场景发挥作用。假设你有班级&#34;员工&#34;就这样:

class Employee
{
    string Name { get; set; }

    Employee Manager { get; set; }

    public Employee(string name, Employee manager)
    {
        Name = name;
        Manager = manager;
    }
}

在你的程序中,你可以这样做:

Employee george = new Employee("George", null);
Employee michael = new Employee("Michael", george);

但不是这样:

Employee michael = new Employee("Michael", george);
Employee george = new Employee("George", null);

因为很明显,对象&#34; george&#34;在宣布之前不能使用。

这是有问题的,例如我可能通过从数据库中检索信息来构建我的Employee对象,而我无法控制对象出现的顺序。

我可以想到一些解决方案,但似乎没有一个解决方案&#34;正确&#34;因为他们都有许多其他问题。

即。我可以在技术上用&#34; Manager&#34;来实例化每个对象。首先设置为null,并且填充了Employees列表后,将管理员分别分配给应该拥有一个的员工。对于可能有更简单的解决方案的问题,这感觉就像毫无意义的开销。

所以基本上我的问题是,解决这个问题的正确做法通常是什么?提前感谢您的回答。

1 个答案:

答案 0 :(得分:1)

  

我可能是通过从数据库中检索信息来构造我的Employee对象,而我无法控制对象出现的顺序。

每个数据库都可以对东西进行排序这是基本的SQL。即使您有未分类的数据而没有数据库,您也可以在程序中对其进行排序。因此,答案将始终是对数据进行排序,然后构建对象或者如果您不希望将所有数据都创建为对象,请从您想要获取的数据开始并在循环中获取它的前任,直到你达到了你可以建造的第一个,然后按照你刚建立的链。