一堂课可以自我指导吗?

时间:2016-11-02 02:39:28

标签: c# class

我知道这有点奇怪,我不相信我会走这条路,因为它看起来很荒谬,因为我有更好的选择,但是......

班级可以自我指导吗?它可以包含自己的实例吗?它编译(至少在MonoDevelop中),但我必须想象存在广泛的问题潜力。

有问题的代码是:

public class DamageVehicle
{
    public int DVehicleID {get; set;}
}

public class DamageTypeArray
{
    public int[] DTypeArray {get; set;}
}

public class DamagePackage
{
    DamageVehicle dv;
    DamageTypeArray dta;
    DamagePackage dp;
}

是否存在明确的(基于非意见的)原因,为什么这在C#中不起作用?假设在某种程度上,dp = NULL,它将永远不会迭代自己,尽管它似乎有可能这样做。还有什么其他问题可以源于这种用法?

2 个答案:

答案 0 :(得分:2)

不包含本身,它拥有本身的引用。

是的,这没有任何问题。引用本质上只是一个指针,这正是链接列表的实现方式。

答案 1 :(得分:2)

不仅可能,在实践中使用它并不罕见,Singleton模式就是一个很好的例子:

public sealed class Singleton
{
    private static readonly Lazy<Singleton> lazy =
        new Lazy<Singleton>(() => new Singleton());

    public static Singleton Instance { get { return lazy.Value; } }

    private Singleton()
    {
    }
}