引用具有类类型的readonly属性

时间:2018-09-30 20:56:54

标签: c# .net c#-7.3

我正在尝试创建一个只读属性(c#7.2功能)。

public class JobStatus
{
    public int Id { get; set; }
}

public class Job
{
    public ref readonly JobStatus Status => ref _jobStatus;
    private readonly JobStatus _jobStatus = new JobStatus
    {
        Id = 4
    };
}

class Program
{
    static void Main(string[] args)
    {
        var job = new Job();
        job.Status.Id = 5;
    }
}

此代码成功编译。我可能会遇到某种错误,试图更新readonly属性的字段。我是否错误地使用了 ref只读返回功能?

1 个答案:

答案 0 :(得分:2)

根据我在this article中发现的内容,您应该了解以下内容

  

将参数标记为“只读引用”或“输入”不会使它引用的值不可变。尽管声明该参数的函数无法对其进行更改,但可以在其他位置更改该值。不需要多线程,只是一种访问参数所引用的原始变量的方法。

因此,由于您的课程并非一成不变,因此可以在其他地方进行更改。此功能似乎主要与传递参考值有关的性能