0

这是我的代码。我有一个尝试和最后的声明。在 try 块中,我有一个设置指针变量的固定语句。

try
{
    fixed (char* chRef = p)
    {
        //code
    }
}
finally
{
    chRef = null;
}

无论尝试如何退出范围,我都在努力寻找一种将固定指针变量设置为 null 的方法。请帮忙。

char* chRef;
try
{
    fixed (chRef = p)
    {
        //code
    }
}
finally
{
    chRef = null;
}

给我“错误 12 在固定语句中声明的本地类型必须是指针类型”

4

1 回答 1

0

如果这是可能的,你需要确保它chRef在范围内。这意味着将其放在fixed声明中。所以你会这样写:

fixed (char* chRef = p)
{
    try
    {
        //code
    }
    finally
    {
        chRef = null;
    }
}

但这不起作用,因为您不允许分配给指针chRef。毕竟,它是固定的!如果您尝试将编译器对象分配给固定指针:

错误 CS1656:无法分配给“chRef”,因为它是“固定变量”

即使你能做到这一点,而你做不到,那也没有意义。由于chRef即将离开范围,当您知道没有任何东西可以观察到该修改时,修改它是没有意义的。

于 2013-05-22T10:06:51.980 回答