如何在两个Structs之间实现继承

时间:2013-09-30 20:20:59

标签: c# struct

请,我想实现两个Structs之间的继承。表现非常重要。

示例代码:

struct IntColl
{
}

struct ValidIntColl : IntColl
{
}

来自Visual Studio的消息:

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

如何收到此错误? IntColl是一个结构,而不是一个接口!

5 个答案:

答案 0 :(得分:4)

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

有关详细信息,请参阅以下其他问题:

答案 1 :(得分:1)

struct (C# Reference)

  

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

因此,您无法继承struct来创建另一个struct

答案 2 :(得分:1)

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

struct IntColl
{
}

struct ValidIntColl
{
    IntColl MyIntCollField;
}

答案 3 :(得分:0)

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

答案 4 :(得分:0)

  

我想创建一个继承自另一个struct的结构,以便将它放到堆栈

你不能:

  

结构可以实现接口但不能从其他结构继承。

MSDN

  

速度非常重要

您假设结构比类慢。虽然可能存在某些速度差异,但我不会明确地做出这个假设。你使用clases / structs 的内容很可能比内存访问慢。

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

如果你能够证明那些类在你的场景中的结构会更慢,那么你唯一的选择就是在结构图中复制必要的字段。