自动封装字段重构,'使用字段'和'使用属性'的区别?

4
在Visual Studio 2017中,使用自动封装字段重构工具时,有两个选项:
  1. 使用属性(Use Property)
  2. 仍然使用字段(Still use field)

在菜单中的屏幕截图

我已经在一个基本类上测试了不同的选项:

public class Test_EncapsulateFieldRefactoring_Property
{
    public int id;
    public string name;
}

但是两个选项给出了相同的结果:
public class Test_EncapsulateFieldRefactoring_Property
{
    private int id;
    private string name;

    public int Id { get => id; set => id = value; }
    public string Name { get => name; set => name = value; }
}

为什么存在这些选项?在生成的代码和“使用方式”(*)上有什么区别?
免责声明:
- 截图是法语VS。因此,选项翻译由我完成,实际选项文本可能有所不同。 - 我知道字段和属性之间的区别。我查看了很多主题,以查看是否有重复。我可能会错过一个。 - *,找不到一个好的翻译:“在使用方式上”。但在这种情况下,不是作为字段和属性之间的使用差异,而是在菜单选项中的差异。
1个回答

11

在英文中,这些选项被称为:

  • 封装字段(并使用属性)
  • 封装字段(但仍使用字段)

区别在于它对字段的用法所做的处理。第一个选项将更新该字段的所有用法,以使用它创建的新属性。第二个选项不会更改代码中其他地方现有的该字段的用法。

因此,如果您的代码其他地方有以下代码:

var test = new Test_EncapsulateFieldRefactoring_Property();
test.name = "Hello";

你会发现,第一个选项将test.name更新为新的test.Name属性,但第二个选项则不会。


我简直不敢相信在使用Visual Studio时,我竟然没有查找过这个问题!这是一个很好的提醒,让你深入了解你所做的事情,从而获得额外的知识。这个问题被低估了,谢谢。 - Spinstaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接