C# 快速操作属性-仅getter?
在Visual Studio中,假设我有一个如下所示的类字段:C# 快速操作属性-仅getter?,c#,visual-studio,C#,Visual Studio,在Visual Studio中,假设我有一个如下所示的类字段: private string name; public string Name { get => name; set => name = value; } private readonly string name; 我可以右键单击该字段并选择“快速操作和重构>封装字段”,这将创建如下属性: private string name; public string Name { get => name; set
private string name;
public string Name { get => name; set => name = value; }
private readonly string name;
我可以右键单击该字段并选择“快速操作和重构>封装字段”,这将创建如下属性:
private string name;
public string Name { get => name; set => name = value; }
private readonly string name;
如果我有一个如下所示的字段:
private string name;
public string Name { get => name; set => name = value; }
private readonly string name;
我使用快速操作创建属性,它只创建一个getter:
public string Name => name;
我有时有一些私有字段,这些字段在类中不应该是只读的,而应该是来自其他类的只读字段。换句话说,我想要这个:
private string name;
public string Name => name;
如果字段不是只读的,有没有办法让Visual Studio生成这样的getter-only属性?我确信这是一种特殊情况,您不应该期望它成为VS中的标准功能。如果这让您感到困扰,可以从创建
只读
字段开始,生成访问器,然后删除readonly
part,因为外部没有readonly属性,内部没有readonly属性。ReadOnly意味着它在构造时只能更改一次。您需要的是一个私有setter,如下所示:publilc字符串名{get;private set;}
。但是你不可能期望VS知道这就是你想要的。如果您愿意,您可以创建自己的快速操作,如果这是一个重构大量代码的问题。@Michael我将调用public string Name=>Name
是一个“只读属性”,因为它只能用于读取值,而不管name
是否为readonly
字段。但这是语义学。