我正在尝试创建一个只读属性(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只读返回功能?
答案 0 :(得分:2)
根据我在this article中发现的内容,您应该了解以下内容
将参数标记为“只读引用”或“输入”不会使它引用的值不可变。尽管声明该参数的函数无法对其进行更改,但可以在其他位置更改该值。不需要多线程,只是一种访问参数所引用的原始变量的方法。
因此,由于您的课程并非一成不变,因此可以在其他地方进行更改。此功能似乎主要与传递参考值有关的性能