相关疑难解决方法(0)

食人族课程

有一段时间以来,我一直试图解决为什么允许一些"食人族"类编译的原因.

在我继续之前,也许我应该解释一下我称之为"食人族"的课程.不确定我是刚刚发明了这个术语,还是已经存在了一段时间,或者即使我正确使用它,但现在这并不重要.

我基本上把食人族叫做一个消耗自己的类.换句话说,一个类的接口声明了自己类型的成员.例如:

class Foo
{
    public Foo SomeFoo; 
}
Run Code Online (Sandbox Code Playgroud)

如上所示,类Foo有一个类型为Foo(本身)的成员.

现在,我第一次看到这个(很久以前)我没有编译它的东西,但令我惊讶的是它确实编译了.我之所以没有编译的原因,是因为对我来说,这会尖叫某种类型的递归噩梦.

为了使事情进一步复杂化,我决定尝试同样的事情,但使类成为一个结构,如:

struct Foo
{
    public Foo SomeFoo; 
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不会编译,而是你得到错误:类型'Foo'的struct成员'Foo.SomeFoo'导致struct布局中的循环

对我来说,编译错误更有意义,没有错误,但我相信这种行为最合乎逻辑的解释,所以我想知道你们中是否有人可以解释这种行为.

谢谢.

.net c#

11
推荐指数
3
解决办法
1281
查看次数

标签 统计

.net ×1

c# ×1