【问题标题】:Why does MSDN documentation show protected methods for Random?为什么 MSDN 文档显示 Random 的受保护方法?
【发布时间】:2015-05-20 12:00:20
【问题描述】:

我一直在阅读 MSDN .Net Framework 类库,我发现了一些东西......

例如,当您阅读System.Random 类文档时,我们会获得有关受保护的 Random.Class 方法的信息。

这些信息对我们有什么帮助,或者我们是否可以覆盖 ToString() 等方法?

【问题讨论】:

  • 我看了你的“问题”,我能想到的是:嗯?
  • 你到底在说什么?哪种方法?
  • 如果你创建了一个子类,知道哪些受保护的方法可供你调用是很有用的,不是吗?
  • The Finalize, MemberwiseClone ,Sample 我们得到了这些信息,我们将如何使用它?这些信息是不是违反了继承规则,对类用户隐藏类实现?

标签: c# .net


【解决方案1】:

您似乎对System.Random 文档有几个问题。它列出了三个受保护的方法,但其中两个是从System.Object 继承的。第三个是Sample,它被记录为返回“0.0 到 1.0 之间的随机浮点数”。

要回答您的标题问题,不,MSDN 文档没有错误。该方法确实存在,并且按照它所说的做。

您还问“我们可以覆盖这些方法吗...?”我们可以。 System.Random 不是密封类,所以我们可以继承它,而Sample 是可覆盖的,所以我们可以覆盖它。即使它不是可覆盖的,它仍然需要记录,因为继承 Random 的类可能需要访问它。

所以对于您的问题“这些信息将如何帮助我们”,它在多个方面有所帮助。如果您创建一个继承 System.Random 的类,您可能需要有关其受保护方法的文档,以便您知道如何使用(或覆盖)这些方法。如果您是框架开发人员,并且正在解决 System.Random 中的错误,您可能需要有关其内部实现的文档。

此外,MSDN 文档与许多其他文档的格式相同,这些文档是从代码中的 XML cmets 自动生成的。如果 MSDN 文档同样是自动生成的,那么遍历整个框架并根据具体情况有选择地隐藏内容将是一项艰巨的工作,即使这样做是可取的。

【讨论】:

    【解决方案2】:

    https://msdn.microsoft.com/en-us/library/system.random%28v=vs.110%29.aspx#Overriding 展示了您如何以及为什么可以从 System.Random 派生以替代您自己的算法。

    【讨论】:

      猜你喜欢
      • 2014-10-09
      • 2019-10-09
      • 2011-01-18
      • 2011-01-18
      • 2015-05-02
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多