![]() |
1
3
|
![]() |
2
4
当你设计一个框架时,你必须决定在不同的抽象层次上做事情。权衡是,如果您选择在高抽象级别公开事物,那么您将以失去对事物的细粒度控制为代价实现泛化。如果您选择在较低的抽象级别公开内容,那么您的概念也不能被概括,但是您可以在较低的级别控制细节。 这是一个设计决策。实现这两者都将是昂贵的,并且会使框架更加膨胀,并且在添加特性时需要同时支持这两者。将来需要保持向后兼容性。在不确定BCL是否有显著好处的情况下,将您能想到的所有内容添加到BCL中是不明智的。 |
![]() |
3
2
因为要么没人考虑过,要么没人认为它会特别有用,要么因为没有足够的预算,要么… 这不是真的必要,是吗?您可以自己轻松地实现它。也许BCL团队认为它不值得实施、测试、记录等的痛苦。永远不要低估一个特性的成本,它听起来“容易”,但它确实有成本。 特别是因为没有人实现的单一接口看起来很奇怪,不是吗?您将期望列表、数组等实现接口,这最终是相当多的工作。 |
![]() |
4
2
目的
|
![]() |
5
1
还有,这其中的动机是什么?“向后”迭代的语言支持? 迭代器模式不太重视一组元素的“方向性”概念。它是一个简单的模式,提供了一个简单的接口来迭代一个集合。 |
![]() |
6
1
更大的问题是,为什么.NET不实现IReadableByIndex,而IReadableByIndex又将由IList继承。这样的类型不会为生成读写IList实现所需的工作添加任何内容,并且会减少生成只读实现所需的工作(将实现IReadableByIndex,而不是IList)。 然而,思考这样的“为什么”并不太有用。.NET就是它。补救.NET 5.0情况的唯一方法是允许声明实现读写属性的接口可以被视为隐式实现只读版本(以便允许IList继承协变的IReadableByIndex而不必添加显式get方法)。 |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |