gpt4 book ai didi

c# - 为什么 .Net FCL 同时在 List 类中实现通用和非通用接口(interface) IList 和 IList

转载 作者:行者123 更新时间:2023-11-30 15:28:12 25 4
gpt4 key购买 nike

List 在 .NET 中的实现方式如下我很惊讶为什么他们同时在类中实现通用和非通用接口(interface)。

[Serializable]
public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>,
IList, ICollection, IEnumerable {
public List();
public void Add(T item);
public Int32 BinarySearch(T item);
public void Clear();
public Boolean Contains(T item);
public Int32 IndexOf(T item);
public Boolean Remove(T item);
public void Sort();
public void Sort(IComparer<T> comparer);
public void Sort(Comparison<T> comparison);
public T[] ToArray();
public Int32 Count { get; }
public T this[Int32 index] { get; set; }
}

最佳答案

Microsoft 使帮助 .NET 程序员忘记 COM 的存在变得非常容易。然而,这并不接近现实,COM 仍然存在并且运行良好,并且仍然是 Windows 上的主要互操作技术。正如最近的一个例子,Store 和 Phone 应用程序中的现代 UI 在底层完全是基于 COM 的。尽管隐藏得非常小心,但在编写 C# 应用程序时几乎没有办法告诉你实际上使用的是 COM。除了看似不费吹灰之力地使用 Javascript 或 C++ 编写的代码的黑魔法。

.NET 中的泛型是一个互操作问题,它是其他非 .NET 语言完全不知道的纯 .NET 实现细节。所以List<T>不能是 [ComVisible(true)] .

IList、ICollection 和 IEnumerable 来拯救,这些接口(interface) ComVisible 并且可供在 Windows 上以几乎任何语言编写的代码使用。

关于c# - 为什么 .Net FCL 同时在 List<T> 类中实现通用和非通用接口(interface) IList 和 IList<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26058267/

25 4 0