0

これは私のコードです。try and finally ステートメントがあります。try ブロック内には、ポインター変数を設定する固定ステートメントがあります。

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

try がどのようにスコープを終了しても、固定ポインタ変数を 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 に答える