主要目的是使子程序更加统一,并有可能在 SET 赋值中根据 Variable 的值选择 struct 的字段。如果我用 fixed() 替换注释行上的当前 fixed(),我会收到错误 CS0212。
为什么它不能工作 - 这是“C#4.0 的当前限制”还是原则上不能工作?
enum ConnectSide {Left,Right}
unsafe private void ConnectSubtreeToNewNode(int iNumNodeHeadSubtree, int iNumNewNode, ConnectSide Side)
{
//fixed (int* prtNode = (Side == ConnectSide.Left) ? &Tree[iNumNewNode].iLeftElement : &Tree[iNumNewNode].iRightElement )
fixed (int* prtNode = &Tree[iNumNewNode].iLeftElement)
{
if (iNumNodeHeadSubtree != iNodeOFF)
{
*prtNode = iNumNodeHeadSubtree;
Tree[iNumNodeHeadSubtree].iParentElement = iNumNewNode;
}
else
*prtNode = iNodeOFF;
}
}
此外
private Node[] Tree;
//Main struct for BST
public struct Node
{
public int Key;
public int iLeftElement;
public int iRightElement;
public int iParentElement;
public int iHeight;
public int iBalance;
}