【发布时间】:2021-09-09 23:53:41
【问题描述】:
我知道标题不清楚,但对我的英语感到抱歉,我没有找到如何提出我的问题。所以我希望下面我可以进一步解释。
事实上,我正在阅读一段代码,其中用户在定义一个类(我们称为 X)时,他声明了一个 X 表(在类定义中)。
来自 C++,这是不可能的,因为 X 类型在那个阶段是不完整的。
还有另一个问题:在 ctor 中,用户分配了 10 个元素,因此认为这可能是一个无限循环,因为对于 X 的每个实例,我们允许 10 个元素,但事实并非如此!
那么 C# 允许这样的行为吗?
//here we start the class definition
class X
{
X[] Items = null; // and here we declare a table of X elements ???
public X()
{
Items = new X[10]; // and here we allocate 10 elements of X ???
}
}
【问题讨论】:
-
用你目前所在的班级的类型就可以了。看来是什么问题?
-
@Progman :我不是说这是个问题,但我来自 C++ 背景,不可能做这样的代码:当你定义一个类时,你不能声明 vars在具有相同类型的那个类中,它是不完整的。只是问C#是否允许。除此之外,在 ctor 中,用户分配了 10 个元素,因此认为我是一个无限循环,因为对于每个实例,我们允许 10 个元素;事实并非如此
-
new X[10]为X类的实例创建一个数组,它不会创建任何X实例。 -
如果你觉得它很奇怪,你可能想考虑一个界面,就像其他人说你可以这样做但使用一个界面可能会感觉不那么奇怪,并且以后可能会打开更多的灵活性
标签: c# definition