【发布时间】:2010-11-16 09:56:16
【问题描述】:
我知道 .NET 中的结构不支持继承,但不清楚为什么它们会以这种方式受到限制。
阻止结构从其他结构继承的技术原因是什么?
【问题讨论】:
-
我不会为这个功能而死,但我可以想到一些结构继承有用的情况:您可能希望将 Point2D 结构扩展到具有继承的 Point3D 结构,您可能想要要从 Int32 继承以将其值限制在 1 到 100 之间,您可能需要创建一个在多个文件中可见的 type-def(使用 typeA = typeB 技巧仅具有文件范围),等等。
-
你可能想阅读stackoverflow.com/questions/1082311/…,它解释了更多关于结构的信息以及为什么它们应该被限制在一定的大小。如果你想在结构中使用继承,那么你可能应该使用一个类。
-
您可能想阅读stackoverflow.com/questions/1222935/…,因为它深入了解了为什么它无法在 dotNet 平台中完成。他们冷酷地将其变成了 C++ 方式,同样的问题对于托管平台来说可能是灾难性的。
-
@Justin 类具有结构可以避免的性能成本。在游戏开发中,这真的很重要。所以在某些情况下,如果你能提供帮助,你不应该使用一个类。
-
@Dykam 我认为它可以在 C# 中完成。灾难是夸张的。当我不熟悉一种技术时,我今天可以用 C# 编写灾难性的代码。所以这不是一个真正的问题。如果 struct 继承可以解决一些问题,在某些场景下提供更好的性能,那我完全赞成。
标签: .net inheritance struct