我知道这有点奇怪,我不相信我会走这条路,因为它看起来很荒谬,因为我有更好的选择,但是......
班级可以自我指导吗?它可以包含自己的实例吗?它编译(至少在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,它将永远不会迭代自己,尽管它似乎有可能这样做。还有什么其他问题可以源于这种用法?
答案 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()
{
}
}