1

次の奇妙な状況があります:Pairは aWidgetおよび anを保持する値型であり、特定の非 nullInt32を返します。リストです。GetNonNullWidget()WidgetList<Pair> lstWidgetsAndNumbers

次のコードは、ローカル変数の初期化時にnull 参照例外をスローします。

編集:

Widget widgetX = null;        //this throws a NulLRefExn

widgetX = GetNonNullWidget();

var pairX = lstWidgetsAndNumbers.Find(pair => pair.First == widgetX);     //but only if this line exists.

VisulStudio2008 のローカル ウィンドウに widgetX赤い警告が表示され、「 '' is null 」というメッセージが表示されます。

メソッドでラムダを使用して 3 行目をカプセル化すると、すべて正常に動作します。

私は自分が思っていたよりもラムダをはっきりと理解していません。誰かがここで何が起こっているのか説明できますか?? ありがとう!

編集:

明確にするために: をGetNonNullWidget()返しますWidget。デバッグ中にチェックできるように、null ではありません。

4

1 に答える 1

0

asオペレーターは NullReferenceException を決してスローしないでください。そのため、現在の説明によると、デバッガーに問題があると思います。

以下を確認します。

これがすべて正しい場合は、次の 1 つまたは複数を試してください。

  • ソリューションを再構築します。
  • Visual Studio を再起動します。
于 2012-09-26T09:18:03.090 に答える