如果一个类(或一个结构)有一个字段,并且我们用相同类型的auto属性替换它,那么考虑到我们不使用反射或任何其他类型的直接或间接元编程,客户端代码是否总是保持不变?例如
int Integer;
public void Test() {
Console.WriteLine(Integer);
}如果我将int Integer更改为int Integer { get; set; },则使用它的代码保持不变。有没有需要修改调用代码的情况?
关于只读字段和get-only属性也有同样的问题。
编辑:我澄清了我的问题。此外,考虑到现有的答案,而不是汽车属性,问题将是关于ref属性:
有没有可能换掉这个?
int Integer;使用
int _integer;
ref int Integer => ref _integer而不需要更改调用代码?
发布于 2019-01-28 14:32:46
如果我用一个属性或相反的字段替换一个字段,当我需要更改客户端源代码时,我想找出一个案例。我想知道这个替代品有多安全
通常,您应该只对具有私有或受保护可访问性的变量使用字段。您的类向客户端代码公开的数据应该通过方法、属性和索引器提供。通过使用这些构造间接访问内部字段,可以防止无效的输入值。存储由公共属性公开的数据的私有字段称为后备存储区或后备字段。
这样你就有了关于字段和属性用法的正式用法
我的意思是,如果我们用auto属性或相反的属性替换一个字段,在某些情况下我们需要更改客户端代码吗
是的,在以下情况下,您可能会打碎东西,
如果要公开由ref传递的字段,则为
如果要继承此类,并且要重新实现或覆盖字段或属性,则返回
简而言之,如果大型代码库依赖于字段/属性,并且您更改了它们,这可能会导致上述任何内容的易碎更改。
但总而言之,如果你遵循上面的微软建议,你应该会有更少的问题,如果你这样做了,那么它可能会被重构为一个新版本(具有易碎的更改,以及更多预期的使用)。
https://stackoverflow.com/questions/54394878
复制相似问题