2017-01-07 2 views
0

null 조건부 연산자 (?)를 사용하려고하는데 정확히 어디에 정확히 넣을 지 모르겠습니다 separators.Contains(textLine[(index - 1)]). "(textLine[(index - 1)])이 null이 아니면"라고 말하고 싶습니다. 도움?C# 널 조건부 연산자

+0

당신은 의미합니까 "표현 null가 아닌 경우, 그렇지 않으면하지 마십시오이 방법을 포함 호출"? –

+0

.............. 예 – user7388546

+0

다른 경우 프로그램이 어떻게 작동해야합니까? –

답변

0

당신이 경우에이 방법을 포함 호출하지 의미하는 경우 배열의 값이 null 인 경우 먼저 확인해야합니다.

// requires possible bounds checking 
char? test = textLine?[index-1]; 
if (test != null && separaters.Contains(test.Value)) 

사용 LINQ :

// does not require bounds checking 
char test = textLine?.Skip(index-1).FirstOrDefault() ?? default(char); 
if (test != default(char) && separaters.Contains(test)) 
+0

우선 char는 결코 null이 될 수 없습니다. 대신에'textLine? [index-1];'이라고 쓰셨습니까? –

+0

네, 그게 내가 무엇을 깨달았는지 지금은 @ M.kazemAkhgary – user7388546

+0

그가 올바른지는 그가 textLine이 null인지 또는 배열의 값이 null 일 수 있다는 것을 확신합니다. –

1

MSDN Docs의 두 번째 예는 귀하의 질문에 대답해야합니다

Customer first = customers?[0]; // null if customers is null 
4

이 방법 Null-conditional Operators 작동하지 않습니다.

null 조건부 연산자는 접두사가 접두사로 표시된 부모 중 하나에 예외 대신 null 만 반환합니다. == null이

예이다 : 당신이 필요로하는 무엇

var g1 = parent?.child?.child?.child; 
if (g1 != null) // TODO 

는, IF 간단한 이다는 조건

if (!string.IsNullOrEmpty(textLine)) 
{ 
    // Work here 
}