-1

以下があります。

int* a;
if(!a) //if(a == NULL) also do that
a = new int;

問題は、int^ でそれを行う方法ですか?

int^ a;
if(?????????????)
a = gcnew int;

PS nullptr はそれらすべてを解決するわけではありません。なぜなら、値を保持しているオブジェクトを見つけた (nullptr は等しくないと判断する) ため、その直後に、このオブジェクトを使用すると System.ObjectDisposedException が発生します。

4

2 に答える 2

0

これは変数をチェックするはずですが、それは本当に奇妙な実装であり、.net GC 操作に依存しています。

    try
            {
                ATestFunctionThatUseVariableForNothing(a);
            }
            catch (System::ObjectDisposedException^ e)
            {
                a = nullptr;
            }
            catch (System::NullReferenceException^ e)
            {
                a = nullptr;
            }

とにかく、別のより良い解決策があるはずです。

安全なことは、通常の * ポインターのようにそのポインターを「削除」するつもりであれば、手動で「削除」(nullptr に設定) することです。

于 2012-06-07T02:03:23.790 に答える