首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用汽车属性替换字段安全吗?

用汽车属性替换字段安全吗?
EN

Stack Overflow用户
提问于 2019-01-28 10:38:18
回答 1查看 108关注 0票数 0

如果一个类(或一个结构)有一个字段,并且我们用相同类型的auto属性替换它,那么考虑到我们不使用反射或任何其他类型的直接或间接元编程,客户端代码是否总是保持不变?例如

代码语言:javascript
复制
int Integer;

public void Test() {
  Console.WriteLine(Integer);
}

如果我将int Integer更改为int Integer { get; set; },则使用它的代码保持不变。有没有需要修改调用代码的情况?

关于只读字段和get-only属性也有同样的问题。

编辑:我澄清了我的问题。此外,考虑到现有的答案,而不是汽车属性,问题将是关于ref属性:

有没有可能换掉这个?

代码语言:javascript
复制
int Integer;

使用

代码语言:javascript
复制
int _integer;
ref int Integer => ref _integer

而不需要更改调用代码?

EN

回答 1

Stack Overflow用户

发布于 2019-01-28 14:32:46

如果我用一个属性或相反的字段替换一个字段,当我需要更改客户端源代码时,我想找出一个案例。我想知道这个替代品有多安全

Fields (C# Programming Guide)

通常,您应该只对具有私有或受保护可访问性的变量使用字段。您的类向客户端代码公开的数据应该通过方法、属性和索引器提供。通过使用这些构造间接访问内部字段,可以防止无效的输入值。存储由公共属性公开的数据的私有字段称为后备存储区或后备字段。

这样你就有了关于字段和属性用法的正式用法

我的意思是,如果我们用auto属性或相反的属性替换一个字段,在某些情况下我们需要更改客户端代码吗

是的,在以下情况下,您可能会打碎东西,

如果要公开由ref传递的字段,则为

如果要继承此类,并且要重新实现或覆盖字段或属性,则返回

  1. 派生类实现需要属性等的接口。

  1. 也有可能在表达式中使用它们,而它需要字段或属性(我认为)。

简而言之,如果大型代码库依赖于字段/属性,并且您更改了它们,这可能会导致上述任何内容的易碎更改。

但总而言之,如果你遵循上面的微软建议,你应该会有更少的问题,如果你这样做了,那么它可能会被重构为一个新版本(具有易碎的更改,以及更多预期的使用)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54394878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档