Описание тега null-conditional-operator

A Safe navigation operator which is used to test for null before performing a member access (?.) or index (?[]) operation.
1 ответ

Оператор Элвиса в цепочке вызова кастинга

Оператор Элвиса, он же оператор с нулевым условием, очень крутой. В запросах LINQ он прекрасно работает в сочетании с объединяющим нуль "??" оператор. Somedata.Where(dt=>(dt?.Inner?.InnerMost?.Include=="Yes")??false); Но что вы будете делать, есл…
4 ответа

Почему я должен поместить () в нулевое условное выражение, чтобы использовать корректную перегрузку метода?

У меня есть эти методы расширения и тип enum: public static bool IsOneOf<T>(this T thing, params T[] things) { return things.Contains(thing); } public static bool IsOneOf<T>(this T? thing, params T[] things) where T : struct { return thi…
24 май '16 в 19:42
2 ответа

Почему я могу опустить последующие нуль-условные операторы в цепочке вызовов?

Рассмотрим следующий код: IEnumerable<int> xx = null; var tt = xx?.Where(x => x > 2).Select(x => x.ToString()); Назначает null в tt, Вопрос в том, почему он работает правильно? Я думал, что я должен использовать ?. прежде чем выбрать …
16 фев '18 в 17:01
3 ответа

C# Безопасный навигационный оператор - что на самом деле происходит?

Я с интересом следил за функцией оператора безопасной навигации, добавленной в C#6. Я с нетерпением ждал этого некоторое время. Но я нахожу другое поведение, чем я ожидал. Я понимаю, что действительно не понимаю, как это на самом деле работает. Учит…
28 авг '15 в 01:13
2 ответа

Почему нуль-условный оператор ведет себя по-разному для == и.Equals()?

У меня был следующий код, который отлично работает: var firstChild = token.First as JProperty; bool isHref = token.Children().Count() == 1 && firstChild?.Name == "href"; Я хотел сделать сравнение строк без учета регистра, поэтому я изменил е…
24 авг '15 в 19:04
1 ответ

Нулевой условный оператор и пустые методы

До C# 6 я писал бы код для избавления от объекта вроде: if (_odbcConnection != null) { _odbcConnection.Close(); _odbcConnection.Dispose(); _odbcConnection = null; } С 6 я могу написать гораздо меньше кода: _odbcConnection?.Close(); _odbcConnection?.…
07 фев '17 в 15:12
2 ответа

Может кто-нибудь объяснить правила приоритета, используя C# 6.0? оператор с?? арифметические операции?

Учитывая следующую выдержку: double value = 10; string text = null; double result = value - text?.Length ?? 0; результат равен 0, и я не могу обернуть голову вокруг фактических операций, происходящих здесь. Я бы подумал, что результат будет 10 вмест…
22 фев '16 в 19:54
1 ответ

Нулевой оператор и оператор if

Почему этот код работает: if (list?.Any() == true) но этот код не: if (list?.Any()) говоря Ошибка CS0266 не может неявно преобразовать тип 'bool?' к "bool" Так почему же это не языковая функция, которая делает такое неявное преобразование в оператор…
09 авг '17 в 17:18
3 ответа

Как я могу использовать условный нулевой оператор для проверки нулевой строки?

Я пытаюсь выполнить запрос LINQ to objects следующим образом: var c1 = allCustomers .Where(x => x.CompanyName.Replace("'", "").StartsWith(searchText)) .ToList(); Это работает нормально, пока CompanyName не является нулевым. Я подумал, что это иде…
1 ответ

C# Null Условный оператор внутри аргумента метода

У меня есть следующие методы: float myMethod(MyObject[][] myList) { float a = 0; if (myListProcessingMethod(myList?.Where(x => x.mySatisfiedCondition()).ToList())) { a = 5; } return a; } bool myListProcessingMethod(List<MyObject[]> myList) …
1 ответ

Почему нам не нужно использовать строку? str и для десятичной или int нам нужно использовать десятичную? цена = р? цена

Я новичок в C#. У меня путаница в нулевом условном операторе. в случае строки каждый, кто использует эту строку string name = p?.name; но в случае десятичного числа или числа с плавающей запятой decimal? price = p?.price; int? quantity = p?.count;
19 мар '18 в 06:30
4 ответа

Используйте нулевой условный оператор, чтобы установить значение 0, если ноль

Я новичок в C#, но не для программирования в целом. Я пытаюсь установить добавить некоторые проверки ошибок в моей программе. Есть 3 текстовых поля, и я пытаюсь сделать так, чтобы, если текстовое поле оставлено пустым, оно принимало значение 0. Вот …
30 янв '18 в 20:50
4 ответа

Как я могу использовать Nullable Operator с оператором Null Conditional?

Старый Путь int? myFavoriteNumber = 42; int total = 0; if (myfavoriteNumber.HasValue) total += myFavoriteNumber.Value *2; Новый способ? int? myFavoriteNumber = 42; total += myFavoriteNumber?.Value *2; //fails
1 ответ

Странное поведение C# GC для слабых ссылок и нуль-условного оператора

При создании модульного теста для моего кода C#, который работает с WeakReferencesЯ столкнулся с некоторым странным поведением GC - странным, потому что я не смог придумать объяснение этому. Проблема связана с использованием ?. нулевой условный опер…
1 ответ

UnassignedReferenceException, даже если используется нулевой условный оператор

Я получаю UnassignedReferenceException: The variable _Preset of Foo has not been assigned. хотя я использую нуль-условный оператор ?., Мой код: // […] myTarget.Preset?.ApplyTo(myTarget); Я также заметил, что это упоминает _Preset вместо Preset (что …
3 ответа

C# null-условное сокращение для аргументов метода

Нулевой условный оператор очень полезен, когда метод принадлежит рассматриваемому объекту, но что, если рассматриваемый объект является аргументом? Например, можно ли это сократить? var someList = new List<SomeType>(); if (anotherList.Find(som…
08 апр '18 в 08:57
4 ответа

Нулевой оператор

var a = b?.cd; Разве это выражение не должно всегда давать ошибку компиляции? Если b равно нулю, значение null распространяется через, поэтому c также будет равно нулю и, следовательно, также нуждается в этом операторе. В моем понимании использовани…
31 мар '17 в 14:01
2 ответа

C# Null Условный оператор альтернативы (условное присвоение)?

Нулевой условный оператор C# допускает полезное короткое замыкание: double? range = (unit as RangedUnit)?.WeaponRange; К сожалению, условно-нулевой оператор нельзя использовать одинаково для короткого назначения, потому что он возвращает значение (…
3 ответа

Есть ли "?." оператор делает что-нибудь еще, кроме проверки на ноль?

Как вы, возможно, знаете, DateTime? не имеет параметризованного ToString (в целях форматирования вывода), и делать что-то вроде DateTime? dt = DateTime.Now; string x; if(dt != null) x = dt.ToString("dd/MM/yyyy"); будет бросать Никакая перегрузка для…
4 ответа

?. оператор в C# не компилируется по неизвестной причине

В следующем коде один из двух вариантов не компилируется: class C { public decimal DecimalField; } static C GetC() { return new C(); } //Can return null in reality. C c = GetC(); //Get a C value from somewhere, this might be null string toString1 = …
11 июл '17 в 12:05