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

Оператор распространения значений NULL, представленный в C# 6.0, устраняет необходимость в нескольких проверках NULL в цепочке вызовов методов.
4 ответа

Нулевой оператор распространения и foreach

Читать много об операторе распространения Null ?.Я не нашел ответа, полезно ли это в следующем сценарии. Код, который выдает: int[] values = null; foreach ( var i in values ) // Throws since values is null. { // ... } Чтобы это работало, я должен до…
30 дек '14 в 10:26
3 ответа

Монадическая проверка на ноль в C# 6.0

Я наткнулся на интересный сайт, где рассматриваются некоторые из новых (предлагаемых) функций C# 6.0. Вы можете прочитать это здесь: Возможные возможности C# 6.0. Что мне особенно интересно, так это монадическая проверка нуля (также известная как оп…
13 янв '15 в 12:11
2 ответа

C# 6 Нулевое распространение, какое значение устанавливается, когда объект нулевой

var result = myObject?.GetType(); В этом сценарии, что будет значением Result, если myObject нулевой?
03 дек '15 в 01:29
1 ответ

C# 6 Нулевая условная проверка

Как мне преобразовать это в C# 6 Null Conditional Check? var durationhours = product.ProductAudioAsset.TotalLengthInSeconds != null ? (short?)TimeSpan.FromSeconds(product.ProductAudioAsset.TotalLengthInSeconds.Value).TotalHours : null; где TotalLeng…
23 июн '16 в 00:34
1 ответ

Ошибка при использовании нуль-распространяющего / нуль-условного оператора C# 5.0

Я использую проект.NET 4.5 в VS 2013. Почему следующий код содержит ошибку? var w = Request.Properties["MS_HttpContext"] as System.Web.HttpContextWrapper; string IP = w?.Request.UserHostAddress; //fail to compile Я нашел этот код в этом блоге MSDN.
08 апр '15 в 14:47
1 ответ

Замена с нулевым распространением для проверки нуля перед условным оператором

Увидев похожий вопрос, мне было интересно, если следующее выражение... if (attribute != null && attribute.Description == input) ... будет вести себя (почти) идентично следующему варианту нулевого распространения? if (attribute?.Description =…
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
2 ответа

Нулевое распространение - выполнение функции при проверке на ноль

Можно ли это реализовать с помощью оператора распространения Null (??)? origObj = model.ProjectId != null ? GetObj(model.ProjectId.Value) : null;
14 июн '17 в 00:55
3 ответа

Нулевой условный оператор для "обнуления" существования элемента массива

Новый оператор с нулевым условием C# 6.0 - это удобный инструмент для написания более сжатого и менее запутанного кода. Предполагая, что у одного есть массив клиентов, вы можете получить значение null вместо длины, если customers является нулевым, и…
05 май '16 в 00:31
1 ответ

Почему я не могу использовать нулевой оператор распространения в лямбда-выражениях?

Я часто использую нуль-распространяющий оператор в своем коде, потому что он дает мне более читаемый код, особенно в длинных запросах, и мне не нужно проверять ноль каждый отдельный класс, который используется. Следующий код выдает ошибку компиляции…
3 ответа

Оператор '?' не может быть применен к операнду типа 'T'

Пытаясь сделать Feature универсальный, а потом вдруг компилятор сказал Оператор '?' не может быть применен к операнду типа 'T' Вот код public abstract class Feature<T> { public T Value { get { return GetValue?.Invoke(); } // here is error set …
1 ответ

Нулевой условный оператор, на некоторых машинах не работает должным образом

У меня есть следующий код в DelegatingHandler для проекта WebApi 2. protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { var content = await request.Content?.ReadAsStri…
13 май '16 в 20:08
1 ответ

Побочные эффекты, короткое замыкание и нулевой распространяющийся оператор вызова метода (?.)

Когда целевой объект является нулевым в условном доступе к члену / операторе распространения нулевого значения, а член является методом, оцениваются ли аргументы метода? То есть в следующем коде g() называется? SomeClass x = null; x?.Foo(g()); Как н…
1 ответ

Дерево выражений для o?.Value

Я хотел бы сгенерировать это предложение, используя деревья выражений: o?.Value o является экземпляром любого класса. Есть ли способ?
3 ответа

C# 6.0 Нулевой оператор распространения и присвоение свойства

Этот вопрос был полностью пересмотрен в интересах подробного объяснения. Я заметил то, что кажется довольно слабым ограничением оператора распространения нулей в C# 6.0 в том, что вы не можете вызывать установщики свойств для объекта, который был пе…
11 сен '15 в 08:42
1 ответ

Roslyn C#6? Компиляция оператора выглядит беспорядочно в универсальных типах

Давайте рассмотрим следующее определение класса: public class MyClass<T> { public T t; public bool? c1(T obj) => obj?.Equals(null); public bool? c2() => t?.Equals(null); } В конце концов, некоторые заметки: MyClass<T> не накладыват…
12 июн '16 в 21:13
1 ответ

Есть ли в JavaScript что-то похожее на нуль-распространение в C#?

У меня много кусков JavaScript, как if(myobject != undefined && myobject.someprop == something) и мне интересно, существует ли синтаксис, чтобы сделать это более компактным (даже если это какой-то "хак").
1 ответ

Xamarin Studio C# Нулевой распространяющий оператор

Прежде чем заполнить баг-кейс о Xamarin Studio, я хотел спросить ваше мнение public class Class1 { public int AProp { get; set; } } Учитывая этот простой сценарий Class1 c; var aProp = c?.AProp; не должны aProp быть выведен как int? экземпляр как он…
1 ответ

.NET нативный код падает на конструкторе?.Invoke() (распространение ноль)

Потратив голову на лучшую часть дня, я наткнулся на очень странную проблему с кодом.NET, скомпилированным с использованием.NET Native (используется для приложений Windows UWP). Следующий код прекрасно работает в любой среде выполнения.NET, включая M…
2 ответа

Нулевой условный оператор C# 6 для сбоя метода

Следующее (C# Interactive) компилируется, но взрывается. Не уверен, что мне не хватает... class Test { public Func<object> GetSomething = null; } var t = new Test(); var result = t?.GetSomething();
25 фев '16 в 19:14