如果一个类(或结构)具有一个字段,并且我们将其替换为相同类型的auto属性,则考虑到我们不使用反射或任何其他类型的字段,客户端代码将始终保持不变直接还是间接的元编程?例如
int Integer;
public void Test() {
Console.WriteLine(Integer);
}
如果我将int Integer
更改为int Integer { get; set; }
,则使用它的代码将保持不变。我是否需要更改调用代码?
关于只读字段和只读属性的相同问题。
编辑:我澄清了我的问题。另外,考虑到现有的答案,而不是自动属性,问题将是关于ref属性:
是否可以替换
int Integer;
使用
int _integer;
ref int Integer => ref _integer
调用代码没有任何变化吗?
答案 0 :(得分:1)
如果我需要更改客户端源代码,我想找到一个案例 用属性或相反的字段替换字段。我想知道有多安全 替换是
通常,您应仅将字段用于具有私有变量的字段 或受保护的可访问性。类公开给客户端的数据 应通过方法,属性和索引器提供代码。通过 使用这些结构间接访问内部字段,您可以 防止输入值无效。一个私有字段,用于存储 公共财产公开的数据称为后备存储或后备 字段。
因此,您在田间和财产用途方面有了官方的字眼
我的意思是,如果我们将字段替换为auto属性或相反的字段, 在某些情况下需要更改客户端代码
是的,在以下情况下,您很可能会弄乱事情,
如果要公开由ref传递的字段
如果正在继承此类,并且在字段或属性被重新实现或覆盖的情况下
派生类实现需要属性等的接口。
在某些情况下,也可能在表达式中使用它们并且期望字段或属性(我认为)。
简而言之,如果大型代码库依赖于字段/属性,而您更改了它们,则很可能会导致上述任何方面的破坏性变化。
尽管总而言之,如果您遵循以上Microsoft的建议,那么您应该不会遇到太大的问题,而且如果这样做,则表明它可能仍应重构为新版本(存在易碎的更改,等等)。预期用量)