【问题标题】:What does 'fidelity' of accessor keywords mean?访问器关键字的“保真度”是什么意思?
【发布时间】:2019-07-18 15:08:19
【问题描述】:

我正在阅读 .Net Docs 并且遇到了“保真度”这个词,

类型安全也用于通过保证 访问器关键字的保真度。

这是什么意思(与访问器关键字相关)?

【问题讨论】:

  • 您能否提供一个链接到出现“保真度”一词的页面?
  • 据我所知,这里的“访问者”这个词是不正确的......应该是“可访问性”或“可见性”,指的是关键字public等,因为它在谈论什么其他代码可以调用。我认为这助长了混乱。除此之外,还不清楚......也许它指的是对象状态的一致性和有效性,并防止消费者对对象进行任意更改。不过,这只是一个“旅游”文档,所以不要沉迷于高级描述。
  • 该文档中的错误数量是大量。圣善。我在短短的几段中找到了六打。
  • @EricLippert - 我很高兴你这么说。我以为我只是看着它的那一部分就快疯了。

标签: c# encapsulation accessor


【解决方案1】:

叹息。

文档过多,开发团队没有足够的时间来审查其行话的准确性。此概述是混乱的小错误和令人困惑的非标准术语用法。

有问题的段落是:

类型安全还用于通过保证访问器关键字的保真度来帮助强制封装。访问器关键字是控制其他代码对给定类型成员的访问的工件。这些通常用于一个类型中用于管理其行为的各种数据。

哎呀。这里大错特错。 “访问器关键字”应该是“可访问性级别”。 “其他代码”令人困惑; “其他代码”是指 other 而不是 what 的代码?可访问性修饰符控制对成员的访问无处不在,而不仅仅是在“其他代码”中。为什么我们在谈论members,然后突然转向data? “管理行为”是什么意思?

让我们用标准的 C# 行话重新表述。

静态类型检查通过确保程序尊重类型成员声明的可访问性级别来帮助强制封装。例如,如果类型 Dog 有一个私有成员 mother,则静态类型检查有助于确保阻止从 Dog 类之外的代码访问该成员的尝试。

修复本文档中的所有其他疯狂错误留给读者作为练习。例如,这个代码示例有什么问题?

Dog dog = AnimalShelter.AdoptDog(); // Returns a Dog type.
Pet pet = (Pet)dog; // Dog derives from Pet.
pet.ActCute();
Car car = (Car)dog; // Will throw - no relationship between Car and Dog.
object temp = (object)dog; // Legal - a Dog is an object.

【讨论】:

  • 我用 MORE RANTING 输入了一个 github 问题。 github.com/dotnet/docs/issues/13466
  • Car car = (Car)dog; :好吧,如果你坚持允许Car 被允许从Dog 继承:i.stack.imgur.com/eoTFN.jpg
  • @EricLippert - 该代码示例有很多问题。对于初学者 Car car = (Car) dog;不会抛出运行时异常......它只是不会编译。
  • 虽然第二个,它可能有一种编译方式,但实现它基本上是无用的,而且非常具有误导性和危险性。但是,这会导致文档在许多层面上都是错误的。如果开发人员实现了静态显式转换运算符。公共静态显式运算符 Car(Dog d) => (Car) null;
  • 但是它不会抛出!
猜你喜欢
  • 1970-01-01
  • 2011-02-14
  • 2010-10-29
  • 2011-10-28
  • 1970-01-01
  • 2010-09-12
相关资源
最近更新 更多