相关疑难解决方法(0)

C#6.0空传播运算符和属性赋值

为了彻底解释,这个问题已经彻底改革.

我注意到C#6.0中空传播运算符的限制似乎很差,因为你无法针对已经传播的对象调用属性设置器(尽管你可以针对已经传播的对象调用属性getter) .正如您将从生成的IL (我已反映到C#中)看到的那样,没有任何东西可以限制使用空传播调用属性设置器的能力.

首先,我创建了一个简单的类,包括Java样式的Get/Set方法和具有公共getter/setter访问权限的属性.

public class Person
{
    public Person(string name, DateTime birthday)
    {
        Name = name;
    }

    public string Name { get; set; }

    public void SetName(string name)
    {
        Name = name;
    }

    public string GetName()
    {
        return Name;
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经在下面的测试类中测试了空传播的能力.

public class Program
{
    public static void Main(string[] args)
    {
        Person person = new Person("Joe Bloggs", DateTime.Parse("01/01/1991"));

        // This line doesn't work - see documented error below
        person?.Name = "John Smith"; …
Run Code Online (Sandbox Code Playgroud)

c# c#-6.0 null-propagation-operator

27
推荐指数
2
解决办法
3960
查看次数

标签 统计

c# ×1

c#-6.0 ×1

null-propagation-operator ×1