Xamarin Studio C# Нулевой распространяющий оператор
Прежде чем заполнить баг-кейс о Xamarin Studio, я хотел спросить ваше мнение
public class Class1
{
public int AProp { get; set; }
}
Учитывая этот простой сценарий
Class1 c;
var aProp = c?.AProp;
не должны aProp
быть выведен как int?
экземпляр как он есть в C#-6.0 на Visual Studio 2015+? Потому что на самом деле это не так, это выводится как равнина int
вместо.
Xamarin Studio не жалуется на оператора, но не признает aProp
как обнуляемый тип, следовательно, жалуются на .HasValue
оценка имущества, например; не только с Intellisense, но что хуже во время компиляции
Я что-то упустил или это просто моя IDE?
РЕДАКТИРОВАТЬ: На самом деле я только что узнал, что я могу использовать его в проверке нулевого слияния, даже если предполагаемый тип действительно на самом деле int
!! Какая смесь! XD
1 ответ
Я пробовал этот код в новом консольном приложении, скомпилированном Visual Studio, и он работает нормально:
public class Foo
{
public int Bar { get; set; }
}
static void Main(string[] args)
{
Foo foo = new Foo(); //same result with Foo foo = null;
var baz = foo?.Bar;
if (baz.HasValue) //Expected Error here, but compiles fine
{
throw new NotImplementedException();
}
}
Так что это определенно ошибка. Вам следует открыть новый выпуск на трекере ошибок Xamarin Studio.