C# 中的数组如何部分实现 IList
尽管没有公开声明 IList 的 Count 属性,C# 中的数组可以考虑部分实施接口。
实现细节
虽然数组不直接实现 IList,但公共语言运行时 (CLR) 创建了一个具体的数组类型,它确实实现了界面。然而,这种实现通过传统方式并不明显。
具体来说,CLR 使用一个名为 System.SZArrayHelper 的系统定义类来提供 IList 的底层实现。对于数组。此实现包括 Count 属性,该属性在内部委托给数组的 Length 属性。
使用示例
要将数组转换为 IList,编译器生成使用castclass指令执行强制转换的IL代码。然后,CLR 利用 SZArrayHelper 类来提供接口实现。
限制
IList 的部分实现by 数组有一些限制。例如,尝试在接口参数设置为 IList 的数组类型上调用 GetInterfaceMap 方法;将导致“找不到接口”异常。
含义
IList 的实现通过 SZArrayHelper 的数组是一种鸭子式打字的情况,其中 CLR 提供了数组实现接口的错觉,即使它没有明确这样做。这允许数组用作 IList 。不需要自定义适配器的对象。
以上是C# 数组如何部分实现 IList 接口?的详细内容。更多信息请关注PHP中文网其他相关文章!