gpt4 book ai didi

c# - 为什么我不能在 C# 的结构中拥有相同的结构类型属性?

转载 作者:行者123 更新时间:2023-11-30 14:34:01 25 4
gpt4 key购买 nike

我有一个名为 Node 的 struct 类型,如下所示:

struct Node
{
int data;
Node next;
}

当我编译上面的代码时出现编译时错误,但如果我将它作为一个类,一切都很好。

class Node
{
int data;
Node next;
}

两者有什么区别(我知道一个是 struct ( value type ) 一个是 class(ref type ) )?

最佳答案

你用过 C 类语言编程吗?您知道类/结构和指针等吗?

如果你有,那么请记住:在 C# 中,“类”作为“指针”传递,而“结构”以原始二进制形式传递,它们像 C 中的任何非指针非引用一样被复制/C++。所有其他嵌套限制都被保留,只是命名不同。

在 C# 中,您可以有一个包含类型为“X 类”的字段的“X 类”,因为“类”永远不会直接放在任何地方。这样的字段实际上是一个 4/8 字节的指针/引用。 “X 类”的大小很容易确定。相反,在 C# 中,您不能拥有包含类型为“struct X”的字段的“struct X”。这样的字段将直接嵌入到外部结构中,而不是通过指针/引用。如果“struct X”包含另一个“struct X”,根据其定义肯定会包含另一个“struct X”,而另一个“struct X”将包含……,那么“struct X”的大小是多少?结束在哪里?你会如何标记结束?当您编写“new X()”时,编译器/运行时如何知道要分配多少空间?就像在 C/C++ 中一样,您不能直接创建递归嵌套类型(只能通过指针/引用来实现),在 C# 中,您不能创建递归结构。

关于c# - 为什么我不能在 C# 的结构中拥有相同的结构类型属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14815324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com