2009-03-25 11 views
4
は、VSの通常の動作は、黄色の断層ラインに表示することです

なぜVisual Studioはフォールトラインではなく、次の行にいくつかの例外を表示しますか?

int i = 1; 
    switch (i) 
    { 
     default: 
      throw new NotImplementedException(); //this will be yellow 
    } 

しかし、かなり頻繁に、私は間違った行はこの例のように、着色されていることを目撃した:

 int i = 1; 
     switch (i) 
     { 
      default: 
       if (i==1) 
        throw new NotImplementedException(); 
       break; i = 1; //this line is displayed in yellow, which makes no sense 
     } 

私はこれらの2つのスニペットの違いを理解していますが(最初の状況では "throw ..."行がメソッドの最後の実行可能な行なので、後に続くコードに対してはILは生成されません。例外を表示する最後の行)、私はVSが例外を表示するのに失敗しているのでしょうか? 2番目のスニペットの正しい行。

この奇妙な動作のためにヒントがありますか?この警告について知っているにもかかわらず、たまに私は間違った行をデバッグするのに数分を費やしてしまいます。

答えて

2

コードは更新されていますが、コードがコンパイルされていない(編集と継続で多く発生する)場合、行番号はオフになります。私はこれがかなり前に起こった。これが私がこれが起こる場所を確信している一つの理由です。

私が知っているこの他のケースは、ある理由または別の理由で再構築されないDLL依存関係を持つ場合です(Visual StudioではDLL依存関係ツリーがfubaredになることがあります)。 。これは編集と継続の問題に似ています。

私が考えることができる他のことは、まれに私はスタジオがコードが戻ってくるラインを強調していることに気付きました。例外をスローしてから打ち続けると、コードはx行..しかし、私はそれを再現する方法を正確には知らない。

1

私はキーが "if"句だと思います。私はコードをステップ実行するだけで同じ動作を見てきました。 ifブロック内の単一のステートメントのまわりに "{}"がない場合、現在のステートメントは、期待した行の後の行として示されます。

+0

古いバージョンのスタジオでは、あなたが正しいと思います。私は2K5以来これを見ていません。たぶんその周辺。 – Lomilar

関連する問題