Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 指向C中类实例的指针#_C#_Pointers - Fatal编程技术网

C# 指向C中类实例的指针#

C# 指向C中类实例的指针#,c#,pointers,C#,Pointers,是否可以存储对类实例的引用 class Node { public int id; public int value; public List<Node> neighbours; } 类节点 { 公共int id; 公共价值观; 公布邻居名单; } 如何填充列表邻居,使我对节点实例所做的任何更改都会反映在列表中 public List<Node> neighbours; 示例节点是一个结构: Node node1 = new Node() {

是否可以存储对类实例的引用

class Node
{
    public int id;
    public int value;
    public List<Node> neighbours;
}
类节点
{
公共int id;
公共价值观;
公布邻居名单;
}
如何填充列表
邻居
,使我对
节点
实例所做的任何更改都会反映在列表中

public List<Node> neighbours;
示例节点是一个
结构

Node node1 = new Node() { id = 1, value = 42};
Node node2 = node1;

node2.value = 55;
Console.WriteLine(node1.value); //prints 42, separate objects
如果你有

Node node = new Node{Id =1, Value = 1};
node.neighbours = new List<Node>();
Node neighbourNode = new Node{Id =1, Value = 1};
node.neighbours.Add(neighbourNode);
Node节点=新节点{Id=1,Value=1};
node.neights=新列表();
节点邻居节点=新节点{Id=1,值=1};
node.neights.Add(neighturnode);

将其添加到
节点后,您可以更改
邻居节点
,因为您正在存储引用,它将反映在列表项中。

+1。这个很好的回答中缺少一个细节:我想最好指出,
class
创建一个引用类型,而
struct
创建一个值类型。指出这种差异对来自C++的人来说尤其有用,因为<>代码>类< /代码> /<代码>结构> /COD>是不同的,这些关键字在C中的全部含义可能不明显。
Node node = new Node{Id =1, Value = 1};
node.neighbours = new List<Node>();
Node neighbourNode = new Node{Id =1, Value = 1};
node.neighbours.Add(neighbourNode);