1

ConnectionIndの要素に特定の属性が存在するかどうかを確認する必要がありFlightSegmentます。存在する場合は値を保存し、存在しない場合は次の属性を読み取ります。

存在する場合は次のとおりです。

<FlightSegment ArrivalDateTime="06-16T06:10" ConnectionInd="O" DepartureDateTime="2013-06-16T00:15" SmokingAllowed="false" eTicket="true">
     <Destination ... />
</FlightSegment>

そして、これは存在しない場合です:

<FlightSegment ArrivalDateTime="03-27T17:35" DepartureDateTime="2013-03-27T13:30" SmokingAllowed="false" eTicket="true">
     <Destination ... />
</FlightSegment>

私は次のコードでそれをチェックしていますが、ない場合ConnectionInd、エラーがスローされますObject reference not set to an instance of an object.

if (FlightSegment.Item(f).Attributes["ConnectionInd"].Value != "" && FlightSegment.Item(f).Attributes["ConnectionInd"] != null)
{
    string conInd = FlightSegment.Item(f).Attributes["ConnectionInd"].Value;
}
4

2 に答える 2

1

逆に:

最初のチェック

FlightSegment.Item(f).Attributes["ConnectionInd"] != null

それから

FlightSegment.Item(f).Attributes["ConnectionInd"].Value != ""

それ以外の場合、実際に null の場合は、実際に取得している NullReferenceException を取得します。


もっと効率的:

var att = FlightSegment.Item(f).Attributes["ConnectionInd"];
if (var != null)
{
    string cind = att.Value;
}
于 2013-03-13T03:21:10.107 に答える
0

「ConnectionInd」が存在しない場合は「Value」を取得しようとしているため、 FlightSegment.Item(f).Attributes["ConnectionInd"].Valueの代わりに使用する必要がある hasAttribute などのメソッドが必要です。 null オブジェクトの場合、例外が発生します。

于 2013-03-13T03:05:21.307 に答える