gpt4 book ai didi

c# - 类型 int[] 如何实现尚不存在的接口(interface)(对我而言)?

转载 作者:太空狗 更新时间:2023-10-29 22:25:39 24 4
gpt4 key购买 nike

今天我在Visual Studio 2010(.NET Framework 4.0版)中测试了以下代码

Type[] interfaces = typeof(int[]).GetInterfaces();

我很震惊地发现名单上有这两个人:

System.Collections.Generic.IReadOnlyList`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

System.Collections.Generic.IReadOnlyCollection`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

我之前在安装了 framework 4.5+ 的环境中使用过这两个接口(interface),根据文档,both of它们是为 4.5 创建的。这在我的环境中编译:

System.Collections.Generic.IReadOnlyList<int> list = new int[3];

The type or namespace name 'IReadOnlyCollection' does not exist in the namespace 'System.Collections.Generic' (are you missing an assembly reference?)

当我尝试这样做时:

int[] array = new int[3];
Type iReadOnlyCollection = Type.GetType("System.Collections.Generic.IReadOnlyCollection`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
int count = (int)iReadOnlyCollection.GetProperty("Count").GetValue(array, null);

count 正如预期的那样等于 3。这是怎么回事?

编辑:我认为我的机器上没有安装 framework 4.5:

编辑 2:谢谢@ScottChamberlain,事实证明我确实安装了它。

最佳答案

.NET 4.5 is an in-place update for .NET 4 .这意味着在 visual studio 中你不能引用 IReadOnlyCollection<T>以 .NET 4 为目标时,如果安装了 4.5 更新,则运行时可以使用此类型。

尝试在没有 .NET 4.5 更新(即只有 4.0)的环境中运行代码,代码将找不到接口(interface)类型。即 Type.GetType("System.Collections.Generic.IReadOnlyCollection`1...会返回 null , 和 typeof(int[]).GetInterfaces()不会包含您提到的接口(interface)。

关于c# - 类型 int[] 如何实现尚不存在的接口(interface)(对我而言)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38134062/

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