public void Prepend(int payload) { Node *oldHead = head; head = (Node *)unmanagedMemory.AllocHGlobal(unmanagedMemory.SizeOf(typeof(Node))); unmanagedMemory.StructureToPtr(new Node(payload, oldHead), (IntPtr)head, false); if ((long)oldHead == 0) { tail = head; return; } oldHead->ModifyLink((Node *)0, head); }