2017-01-07 2 views
0

Я пытаюсь использовать Null-условный оператор (?), но я не совсем уверен, где именно положить его separators.Contains(textLine[(index - 1)]). Я хочу сказать: «Если (textLine[(index - 1)]) не является нулевым». Некоторая помощь?C# Null-условный оператор

+0

ли вы имеете в виду "если выражение не равно нулю, называют содержит метод, в противном случае не"? –

+0

.............. да – user7388546

+0

И как должна ваша программа действовать в другом случае? –

ответ

0

Если вы имеете в виду, чтобы не вызвать содержит метод, если значение в вашем массиве равно нулю, тогда вы должны сначала проверить его.

// 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 никогда не может быть пустым. Вы хотели написать 'textLine? [index-1];' вместо этого? –

+0

да, это то, что я понял сейчас @ M.kazemAkhgary – user7388546

+0

Правильно, я был неуверен, если он имел в виду, что textLine был бы нулевым, или значение в массиве могло бы быть нулевым –

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 
} 
Смежные вопросы