如何引用自身内部结构的实例?

时间:2016-06-07 19:45:16

标签: c# struct

例如,假设我想制作一个遗传学模拟器,我有这个非常简单的结构

public struct person{
    string name;
    int age;
    string hairColor; 

    person father;
    person mother;
}

以后我可以用Joey.father.haircolor来引用Joey父母的头发颜色?我一直收到错误:

Struct Member 'person.father' of type 'person' causes a cycle in the struct layout

我唯一的选择是使用课吗?为了速度,我更喜欢使用结构,因为它是所有数据,但如果没有其他选择,我显然可以只使用一个类。

2 个答案:

答案 0 :(得分:4)

您的类型由于多种原因,人员应该是一个班级:

  • 结构不能自引用
  • 如果实例很小并且通常是短暂的或者通常嵌入在其他对象中,则应该考虑结构。情况似乎并非如此。
  • 如果满足所有这些条件,则应考虑结构:1。它在逻辑上表示单个值,如基本类型2.它的实例大小小于16字节3.iIt是不可变的4.它不必被加框经常。事实并非如此。
  • 如果使用结构,则两个人不能共享同一个父,因为变量是按值传递的。这会产生糟糕的设计
  • 你对速度很感兴趣但是类的使用比结构更快,因为变量是通过引用而不是通过值传递的

答案 1 :(得分:0)

Struct不能自引用,因为这会创建一个无限递归的定义。您唯一的选择是使用课程。