Xamarin Studio c#空传播运算符

在填写关于Xamarin Studio的错误案例之前,我想问你的意见

public class Class1
{
    public int AProp { get; set; }
}

考虑到这个简单的情况

Class1 c;
var aProp = c?.AProp;

不宜aProp被推断为一个int? 因为它在Visual Studio 2015+上的c#-6.0中? 因为实际上它不是,它被推断为一个纯int

Xamarin工作室并不抱怨操作员,但它并不认可aProp为可空的类型,因此抱怨。例如, .HasValue属性评估; 不仅是智能感知,而且在编译时更糟糕

我错过了什么,或者它只是我的IDE?

编辑 :我刚刚发现我可以使用它在一个空聚并检查,即使推断类型实际上是int ! 什么混合! XD


我已经在由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的Bug跟踪器中打开一个新问题。

链接地址: http://www.djcxy.com/p/75159.html

上一篇: Xamarin Studio c# null propagating operator

下一篇: Null propagation operator and dynamic variable