IndexOutOfRangeException
제가 약간의 프로젝트에서 방아쇠를 당겼지만 그 이유는 무엇입니까?if 조건으로 인해 IndexOutOfRangeException이 발생했습니다.
다음은 부울 조건입니다 :
(messages != null && messages.Rows[0] != null)
내가 뭘하려고했던 것은이 두 객체가 초기화되었는지 확인하는 것입니다,하지만 당신은 이미 생각으로이 갑자기 일어났다.
IndexOutOfRangeException
제가 약간의 프로젝트에서 방아쇠를 당겼지만 그 이유는 무엇입니까?if 조건으로 인해 IndexOutOfRangeException이 발생했습니다.
다음은 부울 조건입니다 :
(messages != null && messages.Rows[0] != null)
내가 뭘하려고했던 것은이 두 객체가 초기화되었는지 확인하는 것입니다,하지만 당신은 이미 생각으로이 갑자기 일어났다.
Rows
도 비어 있는지 확인해야하는 것처럼 들립니다. 우리는 실제로 Rows
의 유형을 알고하지 않습니다,하지만 당신은 할 수 있습니다 :
if (messages != null && messages.Rows.Count > 0 && messages.Rows[0] != null)
아니면이있는 경우 첫 번째 행을 얻기 위해 LINQ를 사용할 수 있습니다, 그리고이 null인지 확인하십시오
if (messages != null && messages.Rows.FirstOrDefault() != null)
(즉 Rows
일부 T
에 대한 IEnumerable<T>
를 구현하는 가정입니다.)
그것은 Rows[0]
것이다 결코하는 널 (null), 그리고 Y 있다는 가능성도있어 OU 정말 만 카운트가 0보다 큰지 여부를 확인해야합니다
if (messages != null && messages.Rows.Count > 0)
또는`(메시지 :
if (messages != null && messages.Rows.Any())
감사합니다. -하지만 행이 비어 있는지 확인해야하는 이유는 무엇입니까? 엄밀히 말하면, 기술적으로는 그렇지 않다는 것입니다. – user2182300
글쎄 아마도 행이 없습니다 ... –
읽을 수정! = null && messages.Rows.Count> 0)'또는'(messages! = null && messages.Rows.Count> 0 && messages.Rows [0]! = null)' –