【问题标题】:declare variable of a type X in class X when defining my class X在定义我的 X 类时,在 X 类中声明 X 类型的变量
【发布时间】: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


【解决方案1】:

在 C# 中,不完全类型没有问题。

另一方面,我明白你所说的无限循环是什么意思。但是也不是这样,因为只分配了数组(在C++中是一个指针数组),所以这些指针都是NULL,不调用默认构造函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    相关资源
    最近更新 更多