2013-05-21 3 views
0

Это мой код. У меня есть попытка и окончательное утверждение. В блоке try у меня есть фиксированный оператор, который устанавливает переменную указателя.Переменная область try, наконец

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

Im борется за способ, чтобы установить переменную фиксированный указатель на нуль независимо от того, как Пробный выходит Beause области видимости. Пожалуйста помоги.

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

дает мне «Ошибка 12 Тип местный объявлен в фиксированном заявлении должен быть указатель типа»

+0

AFAIK, вы должны * объявить * (вам не нужно его инициализировать), 'chRef' var в более широкой области. То есть перед «попыткой». –

+1

wow указатель в C#. Это интересно. :-) –

+0

@AndreCalil спасибо, пробовал это. Дает мне ожидаемую ошибку идентификатора при присваивании. – user2390368

ответ

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 собирается покинуть область видимости, было бы бессмысленно изменять его, когда вы знаете, что ничто не может наблюдать эту модификацию.

Смежные вопросы