我正在尝试创建一个只读属性(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;
}
}
此代码编译成功。我希望出现某种错误,我正在尝试更新只读属性的字段。我是否错误地使用了ref 只读返回功能?
根据我在本文中发现的内容,您应该将其理解为以下内容
将参数标记为"只读引用"或"in"不会使其引用的值不可变。虽然声明参数的函数无法对其进行更改,但可以在其他位置更改该值。这不需要多线程,只需要一种访问参数引用的原始变量的方法。
因此,由于您的类不是不可变的,因此可以在其他地方进行更改。此功能似乎主要与传递参考值的性能有关