c# - 引用类类型的只读属性
问题描述
我正在尝试创建一个只读属性(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 readonly返回功能?
解决方案
根据我在本文中的发现,您应该将其理解为以下内容
将参数标记为“readonly ref”或“in”不会使其引用的值不可变。虽然声明参数的函数不能对其进行更改,但可以在其他地方更改该值。这不需要多线程,只是一种访问参数引用的原始变量的方法。
因此,由于您的课程不是一成不变的,因此可以在其他地方进行更改。此功能似乎主要与传递参考值的性能有关
推荐阅读
- python - python difflib print 只匹配两个字符串之间的部分
- c# - Azure Functions 在 Json.net 和类型名称处理方面表现不佳
- google-app-engine - 能否将 App Engine 防火墙与 IAP 结合使用?(或不是 AND)
- sql - SQL 存储过程
- sql - SAS Proc SQL 连接
- angular - 在实体框架中检索 Inlude 内的条件值
- python - 带有2个变量的python空格问题
- java - 扩展节点时JavaFX TreeTableView 很慢?
- python - TypeError: object() 没有参数(trex 恐龙机器人)
- php - laravel 5.6 未从 laravel 中的控制器读取变量