gpt4 book ai didi

c# - 通用集合继承

转载 作者:行者123 更新时间:2023-12-02 05:24:22 25 4
gpt4 key购买 nike

我正在使用 MVVM 构建 WPF 应用程序并使用 ObservableCollection。在处理我的 ViewModel 时,我决定检查 ObservableCollection 的类型定义,我看到了一些我认为很奇怪的东西:

// class definition for ObservableCollection
ObservableCollection<T> : Collection<T>, INotifyCollectionChanged, INotifyPropertyChanged
// derives from Collection<T>
...
// class definition for Collection<T>
Collection<T> : IList<T>, ICollection<T>, IEnumerable<T> ... (as well as non-generics)

现在,问题来了:

If ICollection<T> implements IEnumerable<T> 
AND
IList<T> implements ICollection<T> AS WELL AS IEnumerable<T>
...
...
Why does Collection<T> implement ALL THREE?

这真的是它的实现方式还是这个 VS2010 在耍我?

最佳答案

如果是类,说 Collection<T>工具 IList<T> ,你会转到 Visual Studio 中的定义,它会向你显示 Collection<T> 的所有接口(interface)实现。如果Collection<T>工具 IList<T> , 它也会实现 ICollection<T>和 IEnumerable 因为

IList<T> : ICollection<T>

ICollection<T> : IEnumerable<T>

等等

换句话说,如果我写

interface IFoo : IBar, IBaz {}
interface IBar {}
interface IBaz {}

class Foobar : IFoo {}

然后 Visual Studio 会给我:

Foobar : IFoo, IBar, IBaz {...} (from metadata).

如果我实现 IFoo ,我还必须实现 IBar因为IFoo延伸IBar , 因此证明 Foobar 是有意义的还执行 IBarIBaz (否则我只会看到 IFoo,并且必须导航到 IFoo 才能看到 IBar 等)

关于c# - 通用集合继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13325684/

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