C# 最后,请尝试变量范围

C# 最后,请尝试变量范围,c#,scope,try-catch,finally,C#,Scope,Try Catch,Finally,这是我的密码。我有一个尝试和最终的声明。在try块中,我有一个固定语句,用于设置指针变量 try { fixed (char* chRef = p) { //code } } finally { chRef = null; } 我正在努力寻找一种方法,将固定指针变量设置为null,无论try如何退出范围。请帮忙 char* chRef; try { fixed (chRef = p) { //code }

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

try
{
    fixed (char* chRef = p)
    {
        //code
    }
}
finally
{
    chRef = null;
}
我正在努力寻找一种方法,将固定指针变量设置为null,无论try如何退出范围。请帮忙

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

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

如果要做到这一点,您需要确保
chRef
在范围内。这意味着将其放入
fixed
语句中。所以你要写这个:

fixed (char* chRef = p)
{
    try
    {
        //code
    }
    finally
    {
        chRef = null;
    }
}
但这不起作用,因为不允许您分配给指针
chRef
。毕竟,它是固定的!如果尝试将编译器对象指定给固定指针:

error CS1656: Cannot assign to 'chRef' because it is a 'fixed variable' 错误CS1656:无法分配给“chRef”,因为它是“固定变量”
即使你能做到这一点,但你做不到,也没有意义。由于
chRef
即将离开作用域,当您知道没有任何东西可以观察到该修改时,修改它是没有意义的。

AFAIK,您必须在更大的作用域上声明(您不必初始化它)
chRef
var。也就是说,在
之前,请尝试
.wow在c#中使用指针。这很有趣。:-)@AndreCalil谢谢你试过了。为我提供了一个标识符,分配时出现了预期错误。您打算如何处理指向NULL的chRef?将其设置为NULL毫无意义。变量超出了fixed语句末尾的范围。如果你想,你不能滥用它。不要解决这个问题。