tri*_*nes 10 c# properties object
如果我创建了以下Employee对象(简化)...
public class Employee
{
public Employee()
{
}
public String StaffID { get; set; }
public String Forename { get; set; }
public String Surname { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
...在Employee对象中有另一个属性是否可以接受,而Type也是Employee来保存其经理的详细信息(如下所示)?
public class Employee
{
public Employee()
{
}
public String StaffID { get; set; }
public String Forename { get; set; }
public String Surname { get; set; }
public Employee Manager { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
另外,为Manager属性实例化Employee对象的最佳方法是什么?显然包含在构造函数中会导致无限循环.从Employee继承的Manager类是最好的方法(即使所有属性都相同)吗?this.Manager = new Employee();
Ode*_*ded 19
一个对象可能确实有它自己的类型的对象的引用.
这是大多数Node类型对象的实现方式.
至于实例化 - 您可以传入Employee对象以用作管理器(对于没有管理器传递null).构造函数可以有多个重载:
public Employee(Employee manager)
{
this.Manager = manager;
}
Run Code Online (Sandbox Code Playgroud)
是的,对象可以包含对同一类的其他对象的引用.
其次,我不会在cunstructor中创建一个新的Employee,而是像这样注入它:
public class Employee
{
public Employee(Employee manager)
{
this.Manager = manager;
}
public String StaffID { get; set; }
public String Forename { get; set; }
public String Surname { get; set; }
public Employee Manager { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
唯一不可能的情况是使用struct; astruct是直接包含的(而不是对数据的固定大小引用),因此结构的大小Employee必须是“其他字段的大小加上 Employee 的大小”,这是循环的。
特别是你不能:
struct Foo {
Foo foo;
}
Run Code Online (Sandbox Code Playgroud)
(或任何其他会导致循环大小的内容) - 编译器响应:
“Foo”类型的结构成员“Foo.foo”导致结构布局中出现循环
然而,在所有其他情况下都没有问题;对于初始化问题,我会说:最初将其保留为未分配状态,然后让调用者通过属性分配值。