8

コードのいくつかの部分で私を悩ませ続けるこの問題がありましたが、何が原因なのかわかりません。

ブレークポイントを設定したコード ブロックがあります。その後、カーソルを使用して変数にカーソルを合わせると、通常はその変数の内容と値をナビゲートできます。

一部の変数は内容を表示できませんが、何も表示されません。

また、すぐに窓から抜けられないものを調べてみると、The name 'temp' does not exist in the current context

なぜこれが起こるのか、いくつかの整数ではなく他のものではなく、いくつかのクラスオブジェクトではあるが同じタイプの他のオブジェクトではなく、なぜこれが起こるのか、私は本当にイライラしています。

Visual Studio を閉じて再起動しても問題は解決しません。

最適化なしでデバッグで実行しています。

この問題に関するヘルプを探しているだけなので、事前に感謝します。

これが発生するコードの例を次に示します。特別なコードやデリゲートはありません。コードが数行しかない場合でも、プログラムのランダムな部分で発生する可能性があります。

segs2D = ConvertSegmentsTo3DLines(segs2D);
IList<DSegment2D> segs3D = DSegment2D.Duplicate(segs2D);
TransformSegments(segs3D, transform);
foreach (var seg in segs3D)
    MoveSegmentToSolid(seg, moveNormal, solid, false);

Dictionary<double, Strategy> strategiesDic = new Dictionary<double, Strategy>();

double d1 = (double)(segs3D[0].GetP1Tag() ?? 0);
double d2= (double)(segs3D[0].GetP2Tag() ?? 0);
foreach (DSegment2D seg in segs3D)
{
    d1= (double)(seg.GetP1Tag() ?? d1);
    d2= (double)(seg.GetP2Tag() ?? d2);
    ...Stuff
}

4

4 に答える 4

8

また、即時ウィンドウを介してできないものを調査しようとすると、「temp」という名前が現在のコンテキストに存在しないことがわかります

メソッドの完全な名前を使用してみてください

例えば:

名前空間.クラス.メソッド();

それ以外の

class.method();

また、現在のウィンドウが現在選択されているファイル/プロジェクトに依存しているようです。

これがマティアスに役立つことを願っています

于 2014-02-21T12:05:47.020 に答える
0

メソッドの複雑さとインデントの数が当時の問題を引き起こしていたことが判明しました。それ以来、元のコードの多くを単純化して機能させたので、この問題は発生しなくなりました。また、役立つかもしれないVS2012にアップグレードしました。

于 2014-04-14T05:00:59.397 に答える
0

ブレークポイントに到達したコード ブロックで、変数がまだ宣言または初期化されていない可能性があります (つまり、実行がそれほど進んでいません)。

たとえばbar、ブレークポイントに到達すると、次のコード ブロックに関して、説明したホバーとイミディエイト ウィンドウの問題の両方が発生します。

public class Whatever
{
    public void DoSomething()
    {
        string foo = "blah"; // Breakpoint hit and execution stopped here.

        // Do something.

        DoSomethingElse();
    }

    public void DoSomethingElse()
    {
        string bar = "yack";

        // Do something else.
    }
}
于 2013-02-05T05:29:26.787 に答える