-10

拜托,我想实现两个结构之间的继承。性能非常重要。

示例代码:

struct IntColl
{
}

struct ValidIntColl : IntColl
{
}

来自 Visual Studio 的消息:

Error 1 Type 'IntColl' in interface list is not an interface

我如何得到这个错误?IntColl 是一个结构,而不是一个接口!

4

5 回答 5

4

结构只能实现接口,不能继承其他结构。

有关更多信息,请参阅以下其他问题:

于 2013-09-30T20:22:55.593 回答
1

结构(C# 参考)

结构可以实现一个接口,但不能从另一个结构继承

所以你根本不能继承struct来创建另一个struct.

于 2013-09-30T20:22:38.687 回答
1

你也可以使用组合,因为继承在这里不起作用:

struct IntColl
{
}

struct ValidIntColl
{
    IntColl MyIntCollField;
}
于 2013-09-30T20:29:22.537 回答
0

我想创建一个从另一个结构继承的结构,以便将其放入堆栈

你不能:

结构可以实现一个接口,但不能从另一个结构继承。

根据MSDN

速度非常重要

您假设结构比类慢。虽然可能存在一些速度差异,但我不会断然做出这个假设。您对类/结构所做的事情很可能比内存访问慢。

如果继承是关键要求,那么您需要将对象构建为类而不是结构。或者使用另一种模式,如封装(让一个结构成为另一个结构的属性)。

如果您可以证明在您的场景中类会比结构慢,那么您唯一的选择可能是在结构映射中复制必要的字段。

于 2013-09-30T20:26:02.837 回答
0

C# 没有结构继承。您需要将它们更改为类。速度不应该受到太大影响。

于 2013-09-30T20:22:53.350 回答