C# 最后,请尝试变量范围
这是我的密码。我有一个尝试和最终的声明。在try块中,我有一个固定语句,用于设置指针变量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
{
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语句末尾的范围。如果你想,你不能滥用它。不要解决这个问题。