变量范围尝试,最后

时间:2013-05-21 13:07:25

标签: c# scope try-catch finally

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

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

我正在努力将固定指针变量设置为null,无论尝试如何退出范围。请帮忙。

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

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

1 个答案:

答案 0 :(得分:0)

如果这是可能的,您需要确保chRef在范围内。这意味着将它放在fixed语句中。所以你写这个:

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

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

error CS1656: Cannot assign to 'chRef' because it is a 'fixed variable'

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