我想從C#中的int指針獲取低內存技巧的內存地址。但是,當我檢查輸出時,它似乎在打印int的值,而不是它的內存地址。以下是我的代碼:在C#中的整數內存地址#
using (XmlWriter writer = XmlWriter.Create(newBuilder))
{
writer.WriteStartDocument();
writer.WriteStartElement("Data");
GCHandle handle = GCHandle.Alloc(Nodes, GCHandleType.Normal);
//fixed(int * p = &Nodes[0].value) {
for (int i = 0; i < Nodes.Count; i++)
{
writer.WriteStartElement("Node");
writer.WriteStartElement("Value");
writer.WriteValue(this.Nodes[i].Value);
writer.WriteEndElement();
fixed (int* name = &Nodes[i].value)
{
writer.WriteStartElement("Name");
writer.WriteValue(name->ToString());
writer.WriteEndElement();
}
if (Nodes[i].Parent1 != null)
{
fixed (int* parent1 = &Nodes[i].Parent1.value)
{
writer.WriteStartElement("Parent1");
writer.WriteValue(parent1->ToString());
writer.WriteEndElement();
}
}
if (Nodes[i].Parent2 != null) {
fixed (int* parent2 = &Nodes[i].Parent2.value)
{
writer.WriteStartElement("Parent2");
writer.WriteValue(parent2->ToString());
writer.WriteEndElement();
}
}
writer.WriteEndElement();
}
//}
handle.Free();
writer.WriteEndElement();
writer.WriteEndDocument();
//XmlSerializer serializer = new XmlSerializer(typeof(List<Node>));
//serializer.Serialize(writer, this.Nodes);
}
任何想法爲什麼這樣做?
謝謝
你得到值而不是地址的原因是 - >操作符不僅僅是成員訪問,而且也是隱含的解除引用。所以,name-> ToString()和(* name).ToString()是一樣的。 –
a-> b運算符的工作方式與(* a).b相同,因此您要解除指針的引用。 – harold
爲什麼有人想要將臨時固定值的地址寫入XML文件? – dtb