gpt4 book ai didi

.net - 属性与功能(特别是 .NET)

转载 作者:行者123 更新时间:2023-12-04 08:35:26 27 4
gpt4 key购买 nike

我读过一些关于这个主题的讨论,有些东西我就是不明白。

最常见的答案似乎是这样的:使用 ReadOnly 属性返回缓存数据,使用函数返回非缓存数据。根本不要使用 WriteOnly 属性,因为“它没有意义”。

这没有性能原因。在 IL 中,MyProperty 以 get_MyProperty 的形式存在和 set_MyProperty方法。唯一的原因显然是应该假设上述答案。

好的,那为什么还要使用 ReadOnly 属性呢?为什么不直接将变量设为 Public 而不是 Private?
那为什么还要打扰 房产 有吗?缓存数据 -> 公共(public)变量,非缓存数据 -> 函数,写入数据 -> 子

让我们忘记以上所有,并使用属性作为一个方便的功能?
一个“项目”来获取和设置数据。使用常识了解 Get 是否不会返回缓存数据(可能导致延迟)。

-编辑-
我看到人们或多或少同意属性是最好的选择。
我只是不明白为什么我发现有这么多人们反对属性的讨论。

最佳答案

属性是基于方法的操作的方便替代品。 property-getter-setter 和执行相同操作的方法之间没有功能差异;事实上,如果您查看 IL,您会看到属性访问器被“get”和/或“set”方法所取代。

使用属性而不是只允许访问变量的最有力理由是封装。假设您正在编写一个库并公开了 IsBlue多变的。您分发图书馆,每个人都喜欢并使用它。现在,是版本 2 的时候了,当用户设置 IsBlue 时,你想做一些事情。 - 也许执行检查,也许缓存一些东西。为此,您必须将变量转换为属性或方法,并在那里进行检查。现在,您已经破坏了所有客户端代码 - 他们访问的变量不再存在。如果您最初将其实现为属性,则可以只修改属性的代码,并保留二进制兼容性。

关于.net - 属性与功能(特别是 .NET),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1580057/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com