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);