指向C#中的类实例的指针
是否可以将引用存储到类实例中?
class Node { public int id; public int value; public List<Node> neighbours; } 如何以这样的方式填充列表邻居:我对Node实例所做的任何更改都将反映在那里? 解决方法public List<Node> neighbours; 由于Node类是引用类型,所以Node类型的所有变量都只包含对内存中Node对象的引用(就像指针一样) – 因此邻居列表包含对Node对象的引用列表 – 对这些对象的任何更改都将反映在列表中,因为它们指向您修改的对象. 另见Value Types and Reference Types:
编辑以发表评论: 如前所述,您的Node类是引用类型,所有类类型都是.我再次引用MSDN:
那对你来说意味着什么?结构类型的大小是其成员的组合大小,与类类型不同,它不指向内存地址.使用结构将改变类型行为的语义 – 如果您将一个结构实例分配给另一个相同类型的结构(对于任何其他值类型相同),结构中的所有值将从一个复制到另一个,您仍然具有两个单独的对象实例. – 另一方面,对于参考类型,两者都会指向同一个对象. 示例节点是一个类: Node node1 = new Node() { id = 1,value = 42}; Node node2 = node1; node2.value = 55; Console.WriteLine(node1.value); //prints 55,both point to same,modified object 示例Node是一个结构: Node node1 = new Node() { id = 1,value = 42}; Node node2 = node1; node2.value = 55; Console.WriteLine(node1.value); //prints 42,separate objects (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |